有些C++ 程序员,特别是只写C++ 没有写过 Python/PHP 等慢语言的程序员,容易对性能有心智负担,就像着了魔一样,每写3 行代码必有一行代码因为性能考虑而优化使得代码变形(复杂而晦涩)。

我认为,任何系统级的代码,都不应该刻意地在代码层面"形式化"地在表面功夫上面考虑性能优化,而是应该把心思放到如何让代码更简洁和清晰上面。如果逻辑清晰度能提高10%,代码行数能减少10%,即使单个模块性能下降20%,也应该做这笔交易。理论上,即使单个模块性能下降20%,整个系统的性能下降也许只有1%(阿姆达尔定律)。根据经验,如果代码行数减少逻辑清晰度增加,带来的往往是性能提升而不是下降。

如果一个C++ 写的系统中用到了超过 3 处 std::move,就证明程序员有心智负担了。 std::move 并不是性能优化的手段,而是检测系统是否变臭的标记。为了不让检测方法失效,也就是为了避免程序员逃避检测, std::move 外面裹了一层糖衣,吸引那些着了魔的程序员主动来接受检测主动暴露。这个符号证明程序员花了大量的精力去追求表面功夫,而不是把心思放在如何让系统更简洁和清晰上面。

lock free 也是检测一个 C++ 系统是否发臭的标记,如果你能在代码中感受到程序员在极力避免使用锁,也就是明明可以用一行锁解决的事,它偏偏封装了5 个辅助类,引入了3 个概念,那么,显然你也闻到了发臭的味道。

为什么要强调C++ 呢? 因为一个 C++ 程序员诞生的时候,他有极高的机率沾染上"过度优化"的毛病,这个毛病一直伴随许多C++ 程序员的职业生命周期。这是一个慢性病,影响程序员的个人职业发展,毁坏程序员参与开发的系统。


自学C/C++编程难度很大,不妨和一些志同道合的小伙伴一起学习成长!

C语言C++编程学习交流圈子,【点击进入】微信公众号:C语言编程学习基地

有一些源码和资料分享,欢迎转行也学习编程的伙伴,和大家一起交流成长会比自己琢磨更快哦!

最新文章

  1. js中页面跳转几种方法
  2. Engine中如何更改lyr文件数据源的相对路径
  3. ServletDemo
  4. websphere应用程序的使用
  5. SpringDataMongoDB介绍(二)-MongoOperations介绍
  6. HDU 1024 Max Sum Plus Plus 简单DP
  7. 切换tab,并且动态添加标签
  8. LeetCode 84. Largest Rectangle in Histogram 直方图里的最大长方形
  9. js获取网页面的高度和宽度
  10. Linux系统特点
  11. lua中table的遍历,以及删除
  12. 解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误
  13. 数据结构:Queue
  14. 游戏AI技术
  15. [原创]Jmeter工具学习思维导图
  16. UVA548
  17. Linux less/more命令详解
  18. Nodejs Express模块server.address().address为::
  19. Python 逐行分割大txt文件
  20. 【C语言】22-枚举

热门文章

  1. 【API进阶之路6】一个技术盲点,差点让整个项目翻车
  2. Win10+YOLOv3完整安装过程(亲测可运行)
  3. [Noip2016]蚯蚓 (单调队列)
  4. centos7-修改默认python为3
  5. 测试必备工具之抓包神器 Charles 如何抓取 https 数据包?
  6. Django---进阶6
  7. [JAVA]解决不同浏览器下载附件的中文名乱码问题
  8. CVE-2020-5902 简单复现
  9. JavaScript location对象、Navigator对象、Screen对象简介
  10. DVWA学习记录 PartⅣ