设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 开源资讯 查看内容

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

2018-7-16 22:22| 发布者: joejoe0332| 查看: 674| 评论: 0|原作者: oschina|来自: oschina

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

参与 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首歌曲的音乐集。”有关更详细具体的技术细节请查看作者原博客,也可以访问他的 Bard 音乐管理器项目以了解更多。

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

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

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

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

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

  • 尽可能使用线程

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

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


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部