看一名 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-03-25
  • 白蚁斗士感慨: 杭州环境越来越 利于白蚁繁殖 2019-03-25
  • 榆林发布诚信“红黑榜” 拒服兵役者进入“黑名单” 2019-03-24
  • 谈具体的吧,别装模作样了。客观事实与观察事实、科学事实有什么不同? 2019-03-24
  • 特朗普不容小觑,而我们中下层的群众也买不了什么美帝高端奢侈品 2019-03-24
  • 发达国家全这样,尊重个人的选择。[微笑][微笑] 2019-03-24
  • 5月一二三线城市房价环比都涨了,后续会咋样? 2019-03-23
  • 迪玛希全新英单《Screaming 呐喊》首发 将于D时代巡演深圳站首唱迪玛希 2019-03-23
  • 一语惊坛(6月8日):友谊勋章是给国际友人的最高荣誉。 2019-03-23
  • 中央环保督察“回头看” 发现两起虚假整改案例 2019-03-22
  • 今年省内高校招生普增 2019-03-22
  • 建立企业职工基本养老保险基金中央调剂制度 2019-03-22
  • 痛仰乐队新单曲MV《支离》正式上线 犀锐之思展露蜕变雄心痛仰乐队支离 2019-03-22
  • 11金4银!中国队包揽2018年跳水世界杯全部冠军 2019-03-21
  • 湖北出台实施意见社会公益事业信息3年内有望全公开 2019-03-21
  • 349| 413| 437| 354| 917| 518| 226| 813| 511| 906|