在copy功能上,虽然有许多先人都说过了memcpy比sprintf性能更高,但一直没找到相关的数据说明,近期借工程需要,自己简单的用地摊的方法测试了一下:
LARGE_INTEGER litmp;
LONGLONG qt1,qt2;
double dff,dfm;
QueryPerformanceFrequency(&litmp); //获得时钟频率
dff=(double)litmp.QuadPart;
QueryPerformanceCounter(&litmp); //获得初始值
qt1=litmp.QuadPart;
//待测试函数
QueryPerformanceCounter(&litmp); //获得终止值
qt2=litmp.QuadPart;
dfm=(double)(qt2-qt1);
测试结果,对2048bytes的数据进行一次性copy或分10几20次copy,
memcpy用时748~770左右,
sprintf用时41613~42966左右,
上面只是粗测(单位应该是时钟周期),但在数据上解决了自己的疑惑。
在copy功能上,原来sprintf耗时是memcpy的近50~60倍啊!
借博客记录下此次工作,以备后用。
LARGE_INTEGER litmp;
LONGLONG qt1,qt2;
double dff,dfm;
QueryPerformanceFrequency(&litmp); //获得时钟频率
dff=(double)litmp.QuadPart;
QueryPerformanceCounter(&litmp); //获得初始值
qt1=litmp.QuadPart;
//待测试函数
QueryPerformanceCounter(&litmp); //获得终止值
qt2=litmp.QuadPart;
dfm=(double)(qt2-qt1);
测试结果,对2048bytes的数据进行一次性copy或分10几20次copy,
memcpy用时748~770左右,
sprintf用时41613~42966左右,
上面只是粗测(单位应该是时钟周期),但在数据上解决了自己的疑惑。
在copy功能上,原来sprintf耗时是memcpy的近50~60倍啊!
借博客记录下此次工作,以备后用。