论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
大数据
›
数据仓库与分析
›
体系性能优化总结与思考-第一部门
体系性能优化总结与思考-第一部门
半亩花草
论坛元老
|
2025-4-15 16:14:15
|
显示全部楼层
|
阅读模式
楼主
主题
1787
|
帖子
1787
|
积分
5361
1.C++代码优化策略总结
编译器方面:用好的编译器并用好编译器(支持C++11的编译器,IntelC++(速度最快)
GNU的C++编译器GCC/G++(非常符合标准),Visual C++(性能折中),clang(最年轻Mac OS x)。
算法方面:利用更好的算法。
数据结构优化:利用更好的数据结构(不同的数据结构在利用内存管理器的方式也有所不同)。
利用更好的库(熟悉和把握标准C++模板库对于进行性能优化的开辟员是必须的技能,Boost Project 和 Google Code 公开了很多有用的库)。
内存优化:淘汰内存分配和复制(淘汰对内存管理器的调用是一种非常有效的优化手段)。
优化内存管理(内存管理器的调理,丰富的API)。
移除计算(对于单条的C++语句进行优化)。
多线程利用:进步并发性(多个处理惩罚核心执行指令)。
优化锁的利用:淘汰锁的利用,淘汰锁的范围,利用细粒度的锁,采用无锁队列,原子锁或线程局部存储,锁数据而不是代码。
2.影响计算机优化的活动
计算机的物理组本钱身对计算机性能的限定。
计算机的主内存是比力慢的(通往主内存的接口是限定执行速度的瓶颈(冯*诺伊曼瓶颈),(摩尔定理)每年处理惩罚器的核心的数目都会增长,但是计算机的性能未必会进步,由于这些核心只是等待访问内存的机会(内存墙memory wall))。
计算机内存的访问方式(并非以字节为单位),某些内存访问会比其他的更慢(分为一级高速缓存(cache memory)、二级高速缓存、三级高速缓存、主内存、磁盘上的虚拟内存页)。
内存的容量是有限的,每个程序都会与其他程序竞争计算机资源,计算比做决定快。
在处理惩罚器中,访问内存的性能开销远比其他操作的性能开销大,非对齐访问所需要的时间是全部字节都在同一字节中的两倍。
访问频繁利用的内存地点的速度比访问非频繁利用的地点快,访问相邻地点的内存的速度比访问相互远隔的地点的内存块。
访问线程间共享的数据比访问非共享的数据资源慢很多。当并发线程共享数据时,同步代码降低了并发量。
有些语句隐蔽了大量的计算,从语句的外表上看不出语句的性能开销会有多大。
3.性能测量
90/10规则:一个程序会花费90%的运行时去执行10%的代码。
只有正确且精确的测量才是准确的测量。
在Windows上,clock()函数提供了可靠的毫秒级的时钟计时功能。在Windows8和之后的版本中,GetSystemTimePreciseAsfileTime()提供了亚微秒的计时功能。
计算一条C++语句对内存的读写次数,可以估算出一句C++ 语句的性能开销。
4.优化方法
(1)优化热门语句
缓存循环结束条件值
从循环中移除不变性代码
从循环中移除无谓的函数调用
从循环中移除隐含的函数调用
(2)淘汰函数调用开销
函数调用开销分析
:
尽管执行函数体的开销大概会非常大,但是调用函数的开销与调用大多数 C++ 语句的开销 一样,黑白常小的。不外,当函数被多次调用时,累积的开销大概会变得巨大,因此淘汰 这种开销非常紧张
函数调用流程
(1) 执行代码将一个栈帧推入到调用栈中来生存函数的参数和局部变量。
(2) 计算每个参数表达式并复制到栈帧中。
(3) 执行地点被复制到栈帧中并天生返回地点。
(4) 执行代码将执行地点更新为函数体的第一条语句(而不是函数调用后的下一条语句)。
(5) 执行函数体中的指令。
(6) 返回地点被从栈帧中复制到指令地点中,将控制权交给函数调用后的语句。
(7) 栈帧被从栈中弹出。
函数调用的根本开销
虚函数调用开销
(3)简短地声明内联函数
(4)
在利用之前定义函数:当编译器编译对某个函数的调用时发现该函数已经被定义了,那么编译器能够自主选择内联这次函数调用
(5)移除未利用的多态性
(6)放弃不利用的接口
(7)用switch替代if-else if-else
(8)克制利用PIMPL惯用法,编译时间少,运行增长
(8)其他常用优化方法
4.多线程优化-未完待续
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
半亩花草
论坛元老
这个人很懒什么都没写!
楼主热帖
YOLOV5 代码复现以及搭载服务器运行 ...
本周涨粉一倍,我决定再开源一个商超管 ...
APP性能优化
Java集合框架(五)-Collections 和 泛型 ...
安装Python
Spring5——JdbcTemplate笔记
经典Python题目:一个列表或者数组去重 ...
《C++性能优化指南》 linux版代码及原 ...
【Redis】BigKey问题
随机数漫谈
标签云
国产数据库
集成商
AI
运维
CIO
存储
服务器
快速回复
返回顶部
返回列表