-
C++程序员看过来,你会为了性能而牺牲代码简洁性吗?
- 网站名称:C++程序员看过来,你会为了性能而牺牲代码简洁性吗?
- 网站分类:技术文章
- 收录时间:2025-06-05 11:30
- 网站地址:
“C++程序员看过来,你会为了性能而牺牲代码简洁性吗?” 网站介绍
原文作者Arne Mertz是一位C++狂热份子,有着丰富的开发经验。文中Arne Mertz针对简洁和性能的关系进行阐述,他认为,开发者不到万不得已时千万不要为了性能而牺牲简洁性,要学会使用工具来解决性能问题。
译文如下:
C++的强项之一是能写出非常高性能的代码。那么在实际中,我们该如何把握好性能处理的尺度呢?
性能≠效率
首先要明确的一点是我们必须把性能和效率区分清楚。这两者分别代表什么?
这看上去好像差不多,但其实不是。举个例子,假设你需要从A点到B点,效率意味着“最短路径”,性能意味着“以跑代走”。因此,即使以博尔特的速度到达终点,虽然高性能,但并不高效—“没有选择最短路径”。
对于程序来说,循环通常会耗费不少时间。这种情况下,性能意味着“单个循环用时越短越好”,效率意味着“尽量降低循环层数”。
性能并非程序的全部
这是很浅显的道理,但往往容易被忽视,特别是程序员新手。在不少编程论坛里,涉及代码性能优化的提问比比皆是。
有个说法是80%的程序运行时间是由约20%代码决定的,还有的说是90%/10%。因此,对于程序来说,关键运算代码可能仅存在于某小部分代码中。所以,如果把精力放在所有代码的优化上,而不重点主攻关键代码,其实是事倍功半的。
我们真的不懂如何写高性能的代码?
事实上,决定程序运行时长主要的因素是指令数的多少,但这不是由我们控制而是由编译器及其优化器所控制的。
优化器种类繁多,除非是该领域的专家,否则很难明白它对代码做了哪些优化工作。优化器可以销毁临时对象,可以内联函数,可以清除更多其它指令。
所以当这些不确定因素存在时,我们还能写出绝对高性能代码吗?如果真的很在意性能,我建议使用工具来辅助完成。
但也不必太悲观。如果有两种或更多的方法来写出同样可读的代码,那么不妨选择最高性能的写法。例如,在不存储结果的情况下,可以使用++iter来代替iter++。
性能和简单并不总是矛盾
影响程序运行时间的另一个重要因素是内存中数据的布局和结构。详细请参考Chandler Carruth的文章Efficiency with Algorithms, Performance with Data Structures。
补充一点,假如数据的内存布局不优良,那么会造成要花费很多时间来从获取数据,同时会造成指令冗余。
对于简洁和性能的关系,还可以参考文章Using the libraries you have, and using them right。
小结
建议默认编写出可读和简单的代码。如果你真的发现存在性能问题并已经找出其位置,那么仍然有很多选择来对此进行处理而不必为了追求快而写出复杂的代码。不到万不得已不要为了性能而牺牲简洁性,同时要学会使用工具来解决性能问题。
那么问题来了,CSDN各位网友,你会为了性能而牺牲代码简洁性吗?
英文出自:arne-mertz.de
(责编/夏梦竹)
更多相关网站
- 6岁失明,黑暗中编写百余软件 他让数百万盲人轻松网购、刷微博
- 独立游戏开发者常犯的十大错误
- 细数那些隐藏在大学里的“扫地僧”,个个都是高人
- 停止用 C++ 启动任何新项目!微软力推 Rust 重构 Windows!
- C++编程笔试题
- 程序员面对Bug的10种反应,有没有戳中你呢?
- 从小报到论文都能实现,“代写作业”已成产业链,此风不可长
- C++是否真的适合做GUI界面?MFC真的过时了吗?
- 推荐10个好用的C++在线编译器,去网吧学习不用配置环境了
- 从零基础到月薪20000!我如何成为一名优秀的C++程序员?
- 编程入门:零基础想要学好C/C++编程?一定要看看这五个步骤
- c++20 协程coroutine
- 每当我C++学习不下去的时候,我就会打开这14个网站
- 最近发表
-
- 联想推出 IdeaPad 14s / 15s:均为 3399 元,运行 Win11 系统
- 顶配版ThinkPad X1 Carbon评测
- 联想ThinkPad X1 Carbon评测
- lenovo联想 拯救者-14 加装ssd、内存及win10转移到ssd经验谈
- 联想发布新款耳机鼠标等配件:专为ThinkPad X1设计
- 杜比全景音体验,联想K4 Note在印度正式发布
- 3099 元起,联想推出 IdeaPad 15:约10小时续航,预装 Win11系统
- 联想拯救者Y70、小新Pad Pro 2022发布丨拯救者Y70测评体验
- 千元可定制!联想K4 Note印度发布:杜比全景音体验
- 声临其境 联想TAB2 A10平板联手杜比
- 标签列表
-
- serv-u 破解版 (6)
- 极域电子教室2009 (6)
- 6300主题下载 (1)
- oracle11204下载 (1)
- c++论坛 (14)
- huaweiupdateextractor (4)
- thinkphp6下载 (7)
- 前端论坛 (11)
- mysql 时间索引 (13)
- mydisktest_v298 (35)
- unlocker208 (1)
- sql 日期比较 (33)
- document.appendchild (35)
- 头像打包下载 (35)
- 二调符号库 (23)
- oppoa5专用解锁工具包 (8)
- acmecadconverter_8.52绿色版 (25)
- oracle timestamp比较大小 (7)
- chm editor破解版 (7)
- throttlestop防止降频 (9)
- f12019破解 (16)
- 流星蝴蝶剑修改器 (18)
- pygame中文手册 (2)
- 联想杜比音效驱动下载 (10)