Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

tstPushBack.C

Go to the documentation of this file.
00001 #include <vector>
00002 #include <cstdlib>
00003 #include <time.h>
00004 #include <iostream>
00005 
00006 /*
00007 Compare the speeds for using push_back, insertion into a vector and insertion into a array.
00008 Input Argument: size of the list.
00009 Author: Rahul S. Sampath
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   //Iterative variable length insertions...
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 }

Generated on Tue Mar 24 16:14:07 2009 for DENDRO by  doxygen 1.3.9.1