2015年5月6日星期三

C++中的vector快速拷贝

今天编程中发现新写的程序运行速度很低,经过一番查找才发现是的vector拷贝的效率问题。

//[1] 方法1
vector vec = vec_src;

//[2] 方法2
vector vec(vec_src);

//[3] 方法3
vector vec(vec_src.size());
std::copy( vec_src.begin(), vec_src.end(), vec.begin() );

// 使用的是OpenCV的方法用来测试运行的时间
double t = (double)getTickCount();
t = ((double)getTickCount() - t)/getTickFrequency();
// some codes
cout << "Times passed in milli seconds: " << t * 1000 << endl;

方法3最快,在我的笔记本上用VS2012在32bit中居然比第一种和第二种方法快近10倍,当然了也可以使用memcpy,但是其效率不会比std::copy高多少。