首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >QList的at与[]10亿次运行速度比较

QList的at与[]10亿次运行速度比较

作者头像
Qt君
发布于 2019-07-15 12:18:44
发布于 2019-07-15 12:18:44
87100
代码可运行
举报
文章被收录于专栏:跟Qt君学编程跟Qt君学编程
运行总次数:0
代码可运行

10亿次QLst的at与[]的运行速度的比较。


环境

  • windows10系统
  • Qt4.8.7(gcc 4.9.2)
  • Qt5.12.3(gcc 7.3.0)
  • Qt Debug构建
  • 10亿次操作比较

对比

  • 单位ms
  • 源码最后附录

Qt版本

参考

at

const at

[]

const []

4.8.7

14

278

279

639

629

5.12.3

14

325

322

418

411


分析

  • Qt5.12.3整体运行速度快于Qt4.8.7;
  • 无论是Qt4.8.7或是Qt5.12.3的运行速度at都优于[];
  • 在Qt4.8.7版本下at和[]运行速度相差不大;
  • 在Qt5.12.3版本下at和[]运行速度相差不大。

附录

  • Qt4.8.7与Qt5.12.3的相同QList源码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
template <typename T>
inline const T &QList<T>::at(int i) const
{ Q_ASSERT_X(i >= 0 && i < p.size(), "QList<T>::at", "index out of range");
 return reinterpret_cast<Node *>(p.at(i))->t(); }
 
template <typename T>
inline const T &QList<T>::operator[](int i) const
{ Q_ASSERT_X(i >= 0 && i < p.size(), "QList<T>::operator[]", "index out of range");
 return reinterpret_cast<Node *>(p.at(i))->t(); }
 
template <typename T>
inline T &QList<T>::operator[](int i)
{ Q_ASSERT_X(i >= 0 && i < p.size(), "QList<T>::operator[]", "index out of range");
  detach(); return reinterpret_cast<Node *>(p.at(i))->t(); }
  • 测试源码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <QList>
#include <QElapsedTimer>
#include <QUuid>
#include <QDebug>

#define ForLoop for (unsigned int i = 0; i < 10*1000*1000; i++)
static QList<int> list;
static QElapsedTimer timer;

qint64 runningTime()
{
    timer.start();

    ForLoop {
        int count = 1 + 2 + 3;
    }

    return timer.elapsed();
}

qint64 atRunningTime()
{
    timer.start();

    ForLoop {
        int count = list.at(0) + list.at(1) + list.at(2);
    }

    return timer.elapsed();
}

qint64 constAtRunningTime()
{
    timer.start();

    ForLoop {
        const int count = list.at(0) + list.at(1) + list.at(2);
    }

    return timer.elapsed();
}

qint64 squareOperationRunningTime()
{
    timer.start();

    ForLoop {
        int count = list[0] + list[1] + list[2];
    }

    return timer.elapsed();
}

qint64 constSquareOperationRunningTime()
{
    timer.start();

    ForLoop {
        const int count = list[0] + list[1] + list[2];
    }

    return timer.elapsed();
}

int main(int argc, char *argv[])
{
    list<<0<<1<<2;

    qDebug()<<"SourceRunningTime: "<<runningTime()<<"milliseconds.";
    qDebug()<<"atRunningTime: "<<atRunningTime()<<"milliseconds.";
    qDebug()<<"constAtRunningTime: "<<constAtRunningTime()<<"milliseconds.";
    qDebug()<<"squareOperationRunningTime: "<<squareOperationRunningTime()<<"milliseconds.";
    qDebug()<<"constSquareOperationRunningTime: "<<constSquareOperationRunningTime()<<"milliseconds.";

    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Qt君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【信创-k8s】海光X86+欧拉/大云OS离线部署k8s1.33.0+kubesphere4.1.3+监控
本文由[编码如写诗-天行1st]原创编写,有任何问题可添加作者微信[sd_zdhr] 获取帮助。
编码如写诗
2025/06/07
2800
【信创-k8s】海光X86+欧拉/大云OS离线部署k8s1.33.0+kubesphere4.1.3+监控
基于 KubeSphere 玩转 k8s 第二季|KubeKey 扩容 Kubernetes Worker 节点实战
上一期,我们实战讲解了使用 KubeSphere 开发的 KubeKey 工具自动化部署 3 Master 和 1 Worker 的 Kubernetes 集群和 KubeSphere。
运维有术
2023/07/16
5860
告别宕机!KubeSphere v4.1.3 联手 K8s v1.32.5,手把手教你打造“永不掉线”的云原生底座
各位读者,好久不见,我是术哥,那个带你玩转 KubeSphere 实战的我又回来了!
运维有术
2025/06/16
3920
告别宕机!KubeSphere v4.1.3 联手 K8s v1.32.5,手把手教你打造“永不掉线”的云原生底座
手把手教你离线部署 KubeSphere v4.1.2 和 k8s v1.30.6,超详细指南!
今天分享的主题是:如何在离线环境部署 Kubernetes v1.30.6 和 KubeSphere v4.1.2 高可用集群。
运维有术
2025/01/22
1.8K2
手把手教你离线部署 KubeSphere v4.1.2 和 k8s v1.30.6,超详细指南!
基于 KubeSphere 玩转 k8s 第二季|openEuler 22.03 安装 KubeSphere 实战入门
基于 KubeSphere 玩转 K8s 第二季系列文档,基于开源国产化操作系统 openEuler 全新打造,也算是在推进国产化浪潮、CentOS搞事情不能用等综合原因下的一种新的尝试。
运维有术
2023/07/16
9590
ARM 版 OpenEuler 22.03 部署 KubeSphere v3.4.0 不完全指南
本文介绍了如何在 openEuler 22.03 LTS SP2 aarch64 架构服务器上部署 KubeSphere 和 Kubernetes 集群。我们将使用 KubeSphere 开发的 KubeKey 工具实现自动化部署,在三台服务器上实现高可用模式最小化部署 Kubernetes 集群和 KubeSphere。
运维有术
2023/10/18
9050
ARM 版 OpenEuler 22.03 部署 KubeSphere v3.4.0 不完全指南
手把手教你离线部署 KubeSphere v4.1.2 和 k8s v1.30.6,超详细指南!
今天分享的主题是:如何在离线环境部署 Kubernetes v1.30.6 和 KubeSphere v4.1.2 高可用集群。
运维有术
2025/01/22
1.3K0
手把手教你离线部署 KubeSphere v4.1.2 和 k8s v1.30.6,超详细指南!
信创:鲲鹏(arm64)+麒麟(kylin v10)离线部署k8s和kubesphere(含离线部署新方式)
先说新方式结论:不论什么CPU架构和操作系统,只要在线能安装的,统统都可以离线安装的。
编码如写诗
2024/08/30
1.6K0
信创:鲲鹏(arm64)+麒麟(kylin v10)离线部署k8s和kubesphere(含离线部署新方式)
基于 KubeSphere 玩转 Kubernetes 第二季|KubeKey 扩容 Kubernetes v1.24 Worker 节点实战
本文是 openEuler 22.03 LTS SP2 基于 KubeKey 扩容 Kubernetes Worker 节点实战一文的更新版。
运维有术
2023/07/20
4200
基于 KubeSphere 玩转 Kubernetes 第二季|KubeKey 扩容 Kubernetes v1.24 Worker 节点实战
最新 KubeKey 3.1.5 离线部署KubeSphere 3.4.1+k8s(更容易了)
点击公众号关注后,回复ks3.4离线包获取 本文制品和镜像。有任何问题可点击联系我,添加微信进行咨询和反馈。
编码如写诗
2024/08/30
1.1K0
最新 KubeKey 3.1.5 离线部署KubeSphere 3.4.1+k8s(更容易了)
KubeSphere 最佳实战:征服 Docker 镜像访问限制:单节点 KubeSphere v3.4.1 部署攻略
KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统,完全开源,支持多云与多集群管理,提供全栈的 IT 自动化运维能力,简化企业的 DevOps 工作流。
运维有术
2024/07/29
5110
KubeSphere 最佳实战:征服 Docker 镜像访问限制:单节点 KubeSphere v3.4.1 部署攻略
KubeSphere 最佳实战:一文搞定 KubeKey v3.1.1 离线部署 KubeSphere v3.4.1 和 Kubernetes v1.28
今天分享的内容是 KubeSphere 最佳实战「2024」 系列文档中的 一文搞定 KubeKey v3.1.1 离线部署 KubeSphere v3.4.1 和 Kubernetes v1.28。
运维有术
2024/05/21
1.1K2
KubeSphere 最佳实战:一文搞定 KubeKey v3.1.1 离线部署 KubeSphere v3.4.1 和 Kubernetes v1.28
41 张高清大图带你抢先体验 KubeSphere v3.4.0 和 Kubernetes v1.27
首先声明,我不是标题党,本文初始目标是要体验用 KubeKey v3.0.9 部署最新版的 KubeSphere v3.4.0 和 Kubernetes v1.27,无奈部署过程中发现了自认为的 Bug,进行不下去了,不得不改换 Kubernetes v1.26。
运维有术
2023/07/29
1.7K1
41 张高清大图带你抢先体验 KubeSphere v3.4.0 和 Kubernetes v1.27
33 张高清大图,带你玩转 KubeSphere v4.1.2 部署与扩展组件安装
备受瞩目的 KubeSphere v4.1.2 已经正式官宣发布,该版本带来了一个重大优化:增加默认的扩展组件仓库。
运维有术
2024/11/11
3990
33 张高清大图,带你玩转 KubeSphere v4.1.2 部署与扩展组件安装
信创:海光(x86)+银河麒麟(kylin v10)离线部署k8s和KubeSphere(一)
本文介绍如何在麒麟 V10 X86_64 架构服务器上制作制品和离线部署 KubeSphere 和 Kubernetes 集群。x86机器部署ks,镜像基本没有变化。主要区别在于各操作系统k8s初始化的依赖包和KubeKey用到的repository有区别。本文将详细记录制品制作和离线部署过程。
编码如写诗
2024/08/30
1.4K0
信创:海光(x86)+银河麒麟(kylin v10)离线部署k8s和KubeSphere(一)
33 张高清大图,带你玩转 KubeSphere v4.1.2 部署与扩展组件安装
备受瞩目的 KubeSphere v4.1.2 已经正式官宣发布,该版本带来了一个重大优化:增加默认的扩展组件仓库。
运维有术
2024/11/12
9050
33 张高清大图,带你玩转 KubeSphere v4.1.2 部署与扩展组件安装
KubeKey 离线部署 KubeSphere v3.4.1 和 Kubernetes v1.26 实战指南
KubeKey 从 v2.1.0 版开始新增了清单 (manifest) 和制品 (artifact) 的概念,为用户离线部署 KubeSphere 和 Kubernetes 集群提供了一种简单便捷的解决方案。
运维有术
2023/12/13
2.2K0
KubeKey 离线部署 KubeSphere v3.4.1 和 Kubernetes v1.26 实战指南
KubeSphere 最佳实战:14 张高清大图带你抢先体验 KubeSphere v4.1.1, AIO 部署全攻略
2024年 9月 9号,备受广大网友期待的 KubeSphere v4 终于在GitHub 代码仓库发布了正式的代码,而且是直接越过了 v4.0 直接发布的 v4.1.1。
运维有术
2024/09/14
6090
KubeSphere 最佳实战:14 张高清大图带你抢先体验 KubeSphere v4.1.1, AIO 部署全攻略
ARM 版 Kylin V10 部署 KubeSphere v3.4.0 不完全指南
本文介绍了如何在 麒麟 V10 aarch64 架构服务器上部署 KubeSphere 和 Kubernetes 集群。我们将使用 KubeSphere 开发的 KubeKey 工具实现自动化部署,在三台服务器上实现高可用模式最小化部署 Kubernetes 集群和 KubeSphere。
运维有术
2023/11/09
1.5K1
ARM 版 Kylin V10 部署 KubeSphere v3.4.0 不完全指南
CentOS7.9 利用 KubeKey 扩容 Kubernetes v1.26 Worker 节点实战
上一期,我们实战讲解了使用 KubeKey v3.0.10 自动化部署 3 Master 和 1 Worker 的 Kubernetes 集群和 KubeSphere。
运维有术
2023/08/25
3970
CentOS7.9 利用 KubeKey 扩容 Kubernetes v1.26 Worker 节点实战
推荐阅读
【信创-k8s】海光X86+欧拉/大云OS离线部署k8s1.33.0+kubesphere4.1.3+监控
2800
基于 KubeSphere 玩转 k8s 第二季|KubeKey 扩容 Kubernetes Worker 节点实战
5860
告别宕机!KubeSphere v4.1.3 联手 K8s v1.32.5,手把手教你打造“永不掉线”的云原生底座
3920
手把手教你离线部署 KubeSphere v4.1.2 和 k8s v1.30.6,超详细指南!
1.8K2
基于 KubeSphere 玩转 k8s 第二季|openEuler 22.03 安装 KubeSphere 实战入门
9590
ARM 版 OpenEuler 22.03 部署 KubeSphere v3.4.0 不完全指南
9050
手把手教你离线部署 KubeSphere v4.1.2 和 k8s v1.30.6,超详细指南!
1.3K0
信创:鲲鹏(arm64)+麒麟(kylin v10)离线部署k8s和kubesphere(含离线部署新方式)
1.6K0
基于 KubeSphere 玩转 Kubernetes 第二季|KubeKey 扩容 Kubernetes v1.24 Worker 节点实战
4200
最新 KubeKey 3.1.5 离线部署KubeSphere 3.4.1+k8s(更容易了)
1.1K0
KubeSphere 最佳实战:征服 Docker 镜像访问限制:单节点 KubeSphere v3.4.1 部署攻略
5110
KubeSphere 最佳实战:一文搞定 KubeKey v3.1.1 离线部署 KubeSphere v3.4.1 和 Kubernetes v1.28
1.1K2
41 张高清大图带你抢先体验 KubeSphere v3.4.0 和 Kubernetes v1.27
1.7K1
33 张高清大图,带你玩转 KubeSphere v4.1.2 部署与扩展组件安装
3990
信创:海光(x86)+银河麒麟(kylin v10)离线部署k8s和KubeSphere(一)
1.4K0
33 张高清大图,带你玩转 KubeSphere v4.1.2 部署与扩展组件安装
9050
KubeKey 离线部署 KubeSphere v3.4.1 和 Kubernetes v1.26 实战指南
2.2K0
KubeSphere 最佳实战:14 张高清大图带你抢先体验 KubeSphere v4.1.1, AIO 部署全攻略
6090
ARM 版 Kylin V10 部署 KubeSphere v3.4.0 不完全指南
1.5K1
CentOS7.9 利用 KubeKey 扩容 Kubernetes v1.26 Worker 节点实战
3970
相关推荐
【信创-k8s】海光X86+欧拉/大云OS离线部署k8s1.33.0+kubesphere4.1.3+监控
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档