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