Qt工作笔记-QVector下标访问和迭代访问效率实践(大跌狗眼)
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下标访问和迭代访问效率实践(大跌狗眼)相关推荐
- Qt工作笔记-QVector与QMap查找效率实战
因为项目使用QVector,太慢了,听说QMap比QVector查找时快,所以写一个小程序试试: 从30000个数据中找5000个 程序运行截图如下: QVector QMap 一样的数据,找一样的数 ...
- Qt工作笔记-发送端发送Json格式的数据包,接收端解析数据包
原理以及运行 原理是因为QJsonDocument提供了一个函数toJson 可以直接把Json数据转成QByteArray,这样就可以直接发送数据包,然后再按照常规方法解析即可,本源码中含解析内容, ...
- Qt工作笔记-QList (链表) QVector (数组)【转载】
原文地址:https://blog.csdn.net/qq_33266987/article/details/53333373 C++中的list 和 vector (1). stl提供了三个最基本的 ...
- Qt|C++工作笔记-QVector与Vector去重复的值
Qt中没有unique函数,只能用遍历的方法了,代码如下: #include <QApplication> #include <QDebug> #include <QSt ...
- C/C++|Qt工作笔记-4种方法判断当前对象(类)名或标识(继承发,typeid法,元对象className()法,Q_CLASSINFO法)
回想起3个月前,刚刚参加工作也做过类似的笔记,但只有2种方法,估计刚毕业没有什么墨水,经过3个月时间又多了2种方法: 这些方法都可用于RTTI 第一个方法是继承发(C++中很推荐用这个,感觉用这个结构 ...
- Qt工作笔记-Qt5中中文编码方面的笔记
目前在使用国内的数据库和实时库接口. 说句实话,国内的东西与国外的东西比,在用户体验和接口调用上比还是存在很大的距离. 个人喜欢用QString去存储数据.个人感觉QTL比STL开发起来要快点 这里有 ...
- Qt工作笔记-使用SQL中的LIMIT进行数据分页
目录 概念 操作 概念 这里使用SQL语言的中LIMIT的特点进行分页显示.这个关键字我就不多说了,现在来看运行截图! 表结构如下: 程序一开始运行: 分页显示: 操作 关键源码如下: sql.h # ...
- Qt工作笔记-列表的分页显示(Qt Widgets框架)
目录 基本概念 演示及代码 打包下载 基本概念 关键是逻辑,因为数据都存储在数据结构中,如何把数据结构里面的东西显示到界面上,这才是分页的关键!估计稍微有代码量的程序员看到这就知道该怎么做了. 这里以 ...
- Qt工作笔记-使用toVariant().toMap()分割Json文件(666解析法)
目录 概念 演示过程及源码 概念 今天看到大佬去解析Json文件的代码,简直666,特意记录此笔记,方便以后用得到,肯定会用得到. 演示过程及源码 如下面的这个Json代码,这个是调用face++的h ...
最新文章
- 数字身份的一些应用和方案
- 骄阳似火 细数史上数据中心火灾 如何才能重蹈覆辙?
- 二叉树的四种遍历方法:前序、中序、后序、层次
- 一个草根站长的创业故事·双喜临门
- matlab仿真计算代码代写,matlab/simulink程序代写
- go基础语法:切片的定义
- struts2自动接收表单数据
- 比紫书优化,14行代码AC——例题 5-7 丑数(Ugly Numbers,UVa 136)——解题报告
- 驱动框架3——在内核中添加或去除某个驱动
- jest.conf.js_如何在Jest中正确模拟Moment.js / dates
- 【C语言】又是排序(指针专题)
- 摩托罗拉再裁员!仍坚守模块化手机业务
- java小游戏源码_分享几款java小游戏源码
- 视觉特效·AI视频抠图·换脸
- 样条插值 spline interpolation matlab c++实现
- window10笔记本安装USB转VGA驱动,电脑重启后无法开机
- vscode 脑图插件mindmap
- Windows 7 万能驱动下载 免费
- 好好说话之Chunk Extend/Overlapping
- RabbitMQ 延迟队列详解
热门文章
- 全球最厉害的 14 位程序员,你知道几位呢?最厉害的研究出了它!
- 0基础怎么做可视化大屏?2种可以节省95%时间的方法教给你
- 统一归档助企业撑起信息的保护伞
- 女人,就是不适合做IT!
- 程序员的未来在哪里?赶紧看看!!
- LeCun自曝使用C语言23年之久,2年前才用Python,还曾短暂尝试Lua
- C++高手总结的编程规律
- 北妈每日一题:如何甩锅给后端!
- 鸿蒙os开发者大会的时间,华为开发者大会2020时间已确定,鸿蒙2.0和EMUI 11即将到来...
- 分享录制的几个 Adobe Illustrator 操作的短视频,有声、1-2 分钟一个