00001 #include <vector>
00002 #include <cstdlib>
00003 #include <time.h>
00004 #include <iostream>
00005
00006
00007
00008
00009
00010
00011
00012 int main(int argc, char ** argv) {
00013 time_t secs1, secs2;
00014 int n = atoi(argv[1]);
00015 std::vector<double> vec;
00016
00017 vec.resize(n);
00018
00019 secs1 = time(NULL);
00020 for(int i=0;i<n;i++) {
00021 vec[i] = (2.0);
00022 }
00023 secs2 = time(NULL);
00024
00025 std::cout<<"Inserting "<<n<<" elements in a vector takes "<<(secs2-secs1)<<" seconds."<<std::endl;
00026
00027 vec.clear();
00028
00029 secs1 = time(NULL);
00030 for(int i=0;i<n;i++) {
00031 vec.push_back(2.0);
00032 }
00033 secs2 = time(NULL);
00034
00035 vec.clear();
00036
00037 std::cout<<"Using push_back for "<<n<<" elements takes "<<(secs2-secs1)<<" seconds."<<std::endl;
00038
00039 secs1 = time(NULL);
00040 double * arr = new double[n];
00041 secs2 = time(NULL);
00042 std::cout<<"Malloc for "<<n<<" elements takes "<<(secs2-secs1)<<" seconds."<<std::endl;
00043
00044 secs1 = time(NULL);
00045 for(int i=0;i<n;i++) {
00046 arr[i] = (2.0);
00047 }
00048 secs2 = time(NULL);
00049
00050 std::cout<<"Inserting "<<n<<" elements in an array takes "<<(secs2-secs1)<<" seconds."<<std::endl;
00051
00052 secs1 = time(NULL);
00053 delete [] arr;
00054 secs2 = time(NULL);
00055 std::cout<<"Freeing memory for "<<n<<" elements takes "<<(secs2-secs1)<<" seconds."<<std::endl;
00056
00057
00058 secs1 = time(NULL);
00059 for(int i=0;i<n;i++) {
00060 std::vector<double> tmp;
00061 for(int j=(i*i);j<((i+1)*(i+1));j++) {
00062 tmp.push_back(2.0);
00063 }
00064 vec.push_back(tmp.begin(),tmp.end());
00065 tmp.clear();
00066 }
00067 secs2 = time(NULL);
00068
00069 std::cout<<"Using push_back (for varaible lenghts) "<<vec.size()
00070 <<" elements takes "<<(secs2-secs1)<<" seconds."<<std::endl;
00071 vec.clear();
00072 }