IDE为Qt Creator 版本为5.7

编译器为MinGW

这个实验感觉与编译器有关(优化)Debug和Release也有关

下面所有的过程都是以Debug版本进行!!!!

程序界面很low,如下图:

变量100086个数据,并使用qDebug()进行输出

使用iterator运行截图如下:

使用sub运行截图如下:

本人运行了多次,这绝非偶然,使用iterator比sub快一倍左右。

总结下:

当数据量大的情况下,如果使用QVector,那么遍历的时候,优先考虑迭代吧!

当数据量大的情况下,如果使用QVector,那么遍历的时候,优先考虑迭代吧!

当数据量大的情况下,如果使用QVector,那么遍历的时候,优先考虑迭代吧!

可能结论不准确,因为是MinGw的编译器,并且还是Debug版本的

源码如下:

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QVector>namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();public slots:void iteratorBtnClicked();void subBtnClicked();private:Ui::Widget *ui;QVector<QString> m_strVec;
};#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <ctime>
#include <QTime>
#include <QMessageBox>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);connect(ui->vectorItPushButton,SIGNAL(clicked(bool)),this,SLOT(iteratorBtnClicked()));connect(ui->vectorSubPushButton,SIGNAL(clicked(bool)),this,SLOT(subBtnClicked()));qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));for(int i=0;i<100086;i++){m_strVec.append("I am IT"+QString::number(qrand()%(2000-1970)+1970)+"!");}
}Widget::~Widget()
{delete ui;
}void Widget::iteratorBtnClicked()
{//traverse it againclock_t start,finish;double totalTime;start=clock();QVector<QString>::iterator it=m_strVec.begin();
//    while(it!=m_strVec.end()){
//        qDebug()<<*it;
//        it++;
//    }for(;it!=m_strVec.end();it++){qDebug()<<*it;it++;}finish=clock();totalTime=(double)(finish-start)/CLOCKS_PER_SEC;QMessageBox::information(this,"information","using sub traverse takes "+QString::number(totalTime,'f',6));
}void Widget::subBtnClicked()
{//traverse it againclock_t start,finish;double totalTime;start=clock();for(int i=0;i<m_strVec.size();i++){qDebug()<<m_strVec[i];}finish=clock();totalTime=(double)(finish-start)/CLOCKS_PER_SEC;QMessageBox::information(this,"information","using sub traverse takes "+QString::number(totalTime,'f',6));
}

main.cpp

#include "widget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

Qt工作笔记-QVector下标访问和迭代访问效率实践(大跌狗眼)相关推荐

  1. Qt工作笔记-QVector与QMap查找效率实战

    因为项目使用QVector,太慢了,听说QMap比QVector查找时快,所以写一个小程序试试: 从30000个数据中找5000个 程序运行截图如下: QVector QMap 一样的数据,找一样的数 ...

  2. Qt工作笔记-发送端发送Json格式的数据包,接收端解析数据包

    原理以及运行 原理是因为QJsonDocument提供了一个函数toJson 可以直接把Json数据转成QByteArray,这样就可以直接发送数据包,然后再按照常规方法解析即可,本源码中含解析内容, ...

  3. Qt工作笔记-QList (链表) QVector (数组)【转载】

    原文地址:https://blog.csdn.net/qq_33266987/article/details/53333373 C++中的list 和 vector (1). stl提供了三个最基本的 ...

  4. Qt|C++工作笔记-QVector与Vector去重复的值

    Qt中没有unique函数,只能用遍历的方法了,代码如下: #include <QApplication> #include <QDebug> #include <QSt ...

  5. C/C++|Qt工作笔记-4种方法判断当前对象(类)名或标识(继承发,typeid法,元对象className()法,Q_CLASSINFO法)

    回想起3个月前,刚刚参加工作也做过类似的笔记,但只有2种方法,估计刚毕业没有什么墨水,经过3个月时间又多了2种方法: 这些方法都可用于RTTI 第一个方法是继承发(C++中很推荐用这个,感觉用这个结构 ...

  6. Qt工作笔记-Qt5中中文编码方面的笔记

    目前在使用国内的数据库和实时库接口. 说句实话,国内的东西与国外的东西比,在用户体验和接口调用上比还是存在很大的距离. 个人喜欢用QString去存储数据.个人感觉QTL比STL开发起来要快点 这里有 ...

  7. Qt工作笔记-使用SQL中的LIMIT进行数据分页

    目录 概念 操作 概念 这里使用SQL语言的中LIMIT的特点进行分页显示.这个关键字我就不多说了,现在来看运行截图! 表结构如下: 程序一开始运行: 分页显示: 操作 关键源码如下: sql.h # ...

  8. Qt工作笔记-列表的分页显示(Qt Widgets框架)

    目录 基本概念 演示及代码 打包下载 基本概念 关键是逻辑,因为数据都存储在数据结构中,如何把数据结构里面的东西显示到界面上,这才是分页的关键!估计稍微有代码量的程序员看到这就知道该怎么做了. 这里以 ...

  9. Qt工作笔记-使用toVariant().toMap()分割Json文件(666解析法)

    目录 概念 演示过程及源码 概念 今天看到大佬去解析Json文件的代码,简直666,特意记录此笔记,方便以后用得到,肯定会用得到. 演示过程及源码 如下面的这个Json代码,这个是调用face++的h ...

最新文章

  1. 数字身份的一些应用和方案
  2. 骄阳似火 细数史上数据中心火灾 如何才能重蹈覆辙?
  3. 二叉树的四种遍历方法:前序、中序、后序、层次
  4. 一个草根站长的创业故事·双喜临门
  5. matlab仿真计算代码代写,matlab/simulink程序代写
  6. go基础语法:切片的定义
  7. struts2自动接收表单数据
  8. 比紫书优化,14行代码AC——例题 5-7 丑数(Ugly Numbers,UVa 136)——解题报告
  9. 驱动框架3——在内核中添加或去除某个驱动
  10. jest.conf.js_如何在Jest中正确模拟Moment.js / dates
  11. 【C语言】又是排序(指针专题)
  12. 摩托罗拉再裁员!仍坚守模块化手机业务
  13. java小游戏源码_分享几款java小游戏源码
  14. 视觉特效·AI视频抠图·换脸
  15. 样条插值 spline interpolation matlab c++实现
  16. window10笔记本安装USB转VGA驱动,电脑重启后无法开机
  17. vscode 脑图插件mindmap
  18. Windows 7 万能驱动下载 免费
  19. 好好说话之Chunk Extend/Overlapping
  20. RabbitMQ 延迟队列详解

热门文章

  1. 全球最厉害的 14 位程序员,你知道几位呢?最厉害的研究出了它!
  2. 0基础怎么做可视化大屏?2种可以节省95%时间的方法教给你
  3. 统一归档助企业撑起信息的保护伞
  4. 女人,就是不适合做IT!
  5. 程序员的未来在哪里?赶紧看看!!
  6. LeCun自曝使用C语言23年之久,2年前才用Python,还曾短暂尝试Lua
  7. C++高手总结的编程规律
  8. 北妈每日一题:如何甩锅给后端!
  9. 鸿蒙os开发者大会的时间,华为开发者大会2020时间已确定,鸿蒙2.0和EMUI 11即将到来...
  10. 分享录制的几个 Adobe Illustrator 操作的短视频,有声、1-2 分钟一个