00001 #include <mpi.h> 00002 #include <iostream> 00003 #include <vector> 00004 #include <cassert> 00005 #include <stdlib.h> 00006 00007 int main(int argc, char**argv) { 00008 00009 int len = atoi(argv[1]); 00010 00011 double stTime = MPI_Wtime(); 00012 std::vector<int> arr1; 00013 for(int i = 0; i < len; i++) { 00014 arr1.push_back(i); 00015 } 00016 double endTime = MPI_Wtime(); 00017 std::cout<<"Initial push_back: "<<(endTime - stTime)<<std::endl; 00018 arr1.clear(); 00019 00020 stTime = MPI_Wtime(); 00021 std::vector<int> arr2(len); 00022 for(int i = 0; i < len; i++) { 00023 arr2[i] = i; 00024 } 00025 endTime = MPI_Wtime(); 00026 std::cout<<"Alloc and set: "<<(endTime - stTime)<<std::endl; 00027 00028 stTime = MPI_Wtime(); 00029 int* arr2ptr = (&(*(arr2.begin()))); 00030 for(int i = 0; i < len; i++) { 00031 arr2ptr[i] = i; 00032 } 00033 endTime = MPI_Wtime(); 00034 std::cout<<"Set using ptr: "<<(endTime - stTime)<<std::endl; 00035 00036 stTime = MPI_Wtime(); 00037 std::vector<int> arr3; 00038 for(int i = 0; i < len; i++) { 00039 arr3.push_back(arr2[i]); 00040 } 00041 endTime = MPI_Wtime(); 00042 std::cout<<"copy by push_back: "<<(endTime - stTime)<<std::endl; 00043 arr2.clear(); 00044 00045 std::vector<int> arr4; 00046 assert(arr4.begin() == arr4.end()); 00047 stTime = MPI_Wtime(); 00048 arr4.insert(arr4.begin(), arr3.begin(), (arr3.begin() + len)); 00049 endTime = MPI_Wtime(); 00050 std::cout<<"copy by insert: "<<(endTime - stTime) <<std::endl; 00051 arr3.clear(); 00052 arr4.clear(); 00053 } 00054