Qt中QVector赋值速度与数组赋值速度的测试比较

工作中需要解析mono12 packet format 格式的灰度图数据,数据大小为100M,自己写代码将其解析成16位的short的时候,耗时都特别长需要5s才能解析完,后来我发现是用了QVector导致耗时特别长,于是我写了一段代码来比较QVector和数组的赋值速度,代码如下:

chronograph calcuTime;//自己编写的计算耗时的类
QVector<short> vnData;
short *pnData = new short[100000000];
calcuTime.start();
for(int i=0;i<100000000;i++)//直接给数组赋值
{
    pnData[i] = 255;
}
double nTime = calcuTime.duration();
qDebug()<<"pnData[i] = 255;数组赋值耗时:"<<nTime;

calcuTime.start();
for(int i=0;i<100000000;i++)//直接给QVector赋值
{
    vnData.append(255);
}
nTime = calcuTime.duration();
qDebug()<<"vnData.append(255);QVector赋值耗时:"<<nTime;

vnData.clear();
calcuTime.start();
for(int i=0;i<100000000;i++)//直接给QVector赋值
{
    vnData.push_back(255);
}
nTime = calcuTime.duration();
qDebug()<<"vnData.push_back(255);QVector赋值耗时:"<<nTime;

vnData.clear();
vnData.resize(100000000);
calcuTime.start();
for(int i=0;i<100000000;i++)//直接给QVector赋值
{
    vnData[i] = 255;
}
nTime = calcuTime.duration();
qDebug()<<"vnData[i] = 255;QVector赋值耗时:"<<nTime;

程序运行输出结果如下:
pnData[i] = 255;数组赋值耗时: 275.885
vnData.append(255);QVector赋值耗时: 2274.67
vnData.push_back(255);QVector赋值耗时: 2352.61
vnData[i] = 255;QVector赋值耗时: 3040.32

总结:
在做比较耗时的运算的时候,最好还是直接操作指针,数组,如果用容器的话会非常耗时!

猜你喜欢

转载自blog.csdn.net/weixin_43935474/article/details/90517903