看一名 KDE 开发者如何使用 C++17 为项目提升巨大速度

局长
 局长
发布于 2018年07月16日
收藏 18

参与 KDE 和 openSUSE 开发的开源项目开发者 Antonio Larrosa 一直在独立开发着一个名为 Bard 的命令行音乐管理器。他还写了一篇有趣的帖子来讲述他如何将这个软件中一些操作的速度提升了大约八千倍。

特别是,Antonio 专注于加速在用户的本地音乐收藏中寻找歌曲/音乐副本的过程。最初的代码通过 Python 实现,后来变成了经过优化的 C++ 代码。令人惊讶的是,优化调整过的 C++ 代码要比 Python 快得多 —— 如果你希望了解作者为实现这个结果所做出的调整,以及所采取的各种步骤带来的影响,不妨看看作者所写的博客。

他没有用 C++ 重写整个程序,而是使用了 Boost.Python 库,该库使得 C++ 和 Python 代码之间可进行无缝的操作。从这时开始,Antonio 开始编写相关的 C++ 代码。特别是,他专注于 C++ 17 并使用了线程。进一步提升性能的操作是调整 C++ 的编译器标记(compiler flags),并将 GCC 从 7.3 版本切换到 8.1 版本。

长话短说,“作者的最后一次代码提交也最后一次提升了速度,达到 7998 倍 —— 36680首/秒(对比速度),并可在13秒内完全处理完一个1000首歌曲的音乐集?!庇泄馗晗妇咛宓募际跸附谇氩榭醋髡?a data-cke-saved- target="_blank" >原博客,也可以访问他的 Bard 音乐管理器项目以了解更多。

最后作者也就这次优化总结了一些心得:

  • 花一些时间思考如何优化代码 —— 这件事十分值得开发者去做

  • 如果你使用 C++ 并能够使用现代编译器,那么请使用 C++ 17,它可以让你更有效地编写更好/更优雅的代码。Lambdas、结构化绑定、constexpr 等特性真的值得花时间阅读它们

  • 允许编译器为你做的事情。,它可以对你的代码进行优化而无需你的任何努力

  • 尽可能少地复制/移动数据。这个操作很慢,很多时候只需要在开发之前考虑一下数据结构就可以避免这个操作

  • 尽可能使用线程

  • 最后,可能也是最重要的:量化一切指标。你不能改进你无法量化的东西(嗯,技术上你可以,但你肯定不知道)

参考 https://www.phoronix.com/

本站文章除注明转载外,均为本站原创或编译?;队魏涡问降淖?,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 排列5的开奖号码
本文标题:看一名 KDE 开发者如何使用 C++17 为项目提升巨大速度
加载中

精彩评论

秀小川
秀小川
"令人惊讶的是,优化调整过的 C++ 代码要比 Python 快得多", 真的很令人惊讶!!!!
y
yumm_007
看到这样的文章被置顶,我毅然决然的删除此软件了。
beyondforever68
beyondforever68
难道有人认为python比c++要快?
douglarek
douglarek
这牛逼吹的可以;可以去看看源码,repo 里面总共只有一个 cpp 文件,还用 c++17 ,这特么跟 c++ 有毛关系
冰力
冰力
最烦呼这些依赖python的桌面项目,真个应脚本语言的性能表现,贼啦浪费cpu资源

最新评论(16

Q
Qyee1666
红薯休假了嘛? 这文章也被审核通过了~ 要不要让他进小黑屋
感冒九十九
感冒九十九

引用来自“秀小川”的评论

"令人惊讶的是,优化调整过的 C++ 代码要比 Python 快得多", 真的很令人惊讶!!!!
我一开始还以为是翻译错误...
久永
久永
36680首/秒 —— 纯内存操作的速度吧?否则就算按照一首歌2M计算,这么高的速度,连IO都来不及??!
gzwxn
gzwxn

引用来自“douglarek”的评论

这牛逼吹的可以;可以去看看源码,repo 里面总共只有一个 cpp 文件,还用 c++17 ,这特么跟 c++ 有毛关系
这个文件依赖 Boost.Python,Boost.Python 依赖数千个 Boost 文件。
Boost.Python 的实现充满奇技淫巧,然而毫不实用,大一点的绑定编译起来直接搞垮编译器,进而搞垮电脑。
土卫十六
土卫十六
c++调用python我完全不怀疑,但Boost.Python向C++能报告进度条吗?
l
lxgy
令人惊讶的是,优化调整过的 C++ 代码要比 Python 快得多��
小果汁儿
小果汁儿

引用来自“beyondforever68”的评论

难道有人认为python比c++要快?
python这辈子都不会比C++运行快。python有他自己的优势。最烦的是python写桌面应用,依赖的乱七八糟,你卸载python有可能会不小心卸载桌面。。。
葛世超ChicoGe
葛世超ChicoGe

引用来自“秀小川”的评论

"令人惊讶的是,优化调整过的 C++ 代码要比 Python 快得多", 真的很令人惊讶!!!!
@秀小川 有啥可惊讶的
douglarek
douglarek
这牛逼吹的可以;可以去看看源码,repo 里面总共只有一个 cpp 文件,还用 c++17 ,这特么跟 c++ 有毛关系
飞鸿眉敛
飞鸿眉敛
换成Java的新特性,一众程序员就会来吹逼了。但这篇文章真的是文不对题,我到哪去看他怎么做到的?还是要跑他的博客
返回顶部
顶部
  • 有一种税叫“亚裔税” 哈佛大学被控招生政策歧视亚裔学生 2019-01-22
  • 楼市下半年或持续降温 房地产长效机制加速推进 2019-01-22
  • 【正德永成车型报价】正德永成4S店车型价格 2019-01-21
  • 天津各界学习十九大精神--天津频道--人民网 2019-01-21
  • 广东水漫大街市民触电身亡,是天灾还是人祸? (原创首发) 2019-01-21
  • 鹰潭高新区思想解放添发展动力 2019-01-21
  • 一带一路中小企业国际合作高峰论坛花絮 2019-01-20
  • 湖北日报网-关于我们 2019-01-20
  • “巾帼心向党 建功新时代”天津十九大女代表分享会 2019-01-19
  • 【学习时刻学思践悟十九大③】清华大学王亚华:“乡村振兴”是总书记掷地有声的承诺 2019-01-19
  • 他帖子里的明理,就是要人们放弃自己的利益,一切顺从别人的指挥棒转 2019-01-19
  • 央视解读不动产登记体系全面运行 房价会下跌 2019-01-19
  • 人民日报评论员:新时代推进生态文明建设的重要遵循 2019-01-18
  • 呼和浩特--内蒙古频道--人民网 2019-01-18
  • 传统村落:蜀道遗韵青林口文章中国国家地理网 2019-01-18
  • 655| 757| 556| 956| 525| 797| 617| 104| 311| 212|