Qt与STL容器效率比较

Qt与STL容器效率比较

测试平台:windows10 Intel 7700HQ
编译器:MSVC2017*64 -O2

vector

插入500000000个int值并删除,测试运行时间,代码如下:

#include "mainwindow.h"
#include <iostream>
#include <QApplication>
#include <vector>
#include <QVector>
#include <windows.h>
std::vector<int> stl;
QVector<int> Qtv;
int main(int argc, char *argv[]) {
    LARGE_INTEGER beg,ed,freq;
    std::cout<<"begin test!"<<std::endl;
    QueryPerformanceFrequency(&freq);
    QueryPerformanceCounter(&beg);
    for(int i = 1; i<=500000000; i++) {
        stl.push_back(i);
    }
    stl.clear();
    QueryPerformanceCounter(&ed);
    double duration = (double)(ed.QuadPart-beg.QuadPart)/(double)freq.QuadPart;
    std::cout<<"std:"<<duration<<std::endl;
    QueryPerformanceCounter(&beg);
    for(int i = 1; i<=500000000; i++) {
        Qtv.push_back(i);
    }
    Qtv.clear();
    QueryPerformanceCounter(&ed);
    duration = (double)(ed.QuadPart-beg.QuadPart)/(double)freq.QuadPart;
    std::cout<<"Qt:"<<duration<<std::endl;
    return 0;
}

结果:单位:s

项目 测试1 测试2 测试3
stl 4.49656 4.26468 4.30204
qt 4.69023 4.74365 4.69194
如果是1000000000的数据量的话STL需要7.5s,而Qt会直接卡死。综上来看,stl的vector效率高于QVector。

set

插入50000000组数据,比较时间,代码:

#include "mainwindow.h"
#include <iostream>
#include <QApplication>
#include <set>
#include <QSet>
#include <cstdlib>
#include <windows.h>
std::set<int> stl;
QSet<int> Qtset;
int main(int argc, char *argv[]) {
    LARGE_INTEGER beg,ed,freq;
    std::cout<<"begin test!"<<std::endl;
    QueryPerformanceFrequency(&freq);
    QueryPerformanceCounter(&beg);
    for(int i = 1; i<=50000000; i++) {
        stl.insert(i);
    }
    stl.clear();
    QueryPerformanceCounter(&ed);
    double duration = (double)(ed.QuadPart-beg.QuadPart)/(double)freq.QuadPart;
    std::cout<<"std:"<<duration<<std::endl;
    QueryPerformanceCounter(&beg);
    for(int i = 1; i<=50000000; i++) {
        Qtset.insert(i);
    }
    Qtset.clear();
    QueryPerformanceCounter(&ed);
    duration = (double)(ed.QuadPart-beg.QuadPart)/(double)freq.QuadPart;
    std::cout<<"Qt:"<<duration<<std::endl;
    return 0;
}

项目 测试1 测试2 测试3
stl 13.8065 12.876 12.6713
qt 6.56534 6.13544 6.20306
可见,QSet效率远高于STL.
posted @ 2021-07-25 14:30  DengHaoyu  阅读(388)  评论(0编辑  收藏  举报