博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
看一名 KDE 开发者如何使用 C++17 为项目提升巨大速度
阅读量:6334 次
发布时间:2019-06-22

本文共 862 字,大约阅读时间需要 2 分钟。

  hot3.png

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

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

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

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

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

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

  • 尽可能使用线程

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

参考 

转载地址:http://xksoa.baihongyu.com/

你可能感兴趣的文章
RHEL7启动到命令模式
查看>>
sublime的python开发环境搭建
查看>>
Windows Server 2008 R2 配置AD(Active Directory)域控制器
查看>>
Python函数之装饰器
查看>>
Ace of Aces
查看>>
The Factor
查看>>
基于AdminLTE的jquery头像更新
查看>>
6、Modal
查看>>
比较和排序(IComparable和IComparer以及它们的泛型实现)
查看>>
关于浮点数精度的问题
查看>>
第四十八课、替换对话框的设计与实现------------------狄泰软件学院
查看>>
集成 dubbo 微服务
查看>>
C++11 占位符placeholders和函数bind用法
查看>>
驱动编译的时候注意编译工程选项
查看>>
使用NSData来加载文件
查看>>
嵌入式开发必备知识点
查看>>
C#实现WinForm下DataGridView控件的拷贝和粘贴
查看>>
Django-rest-framework 接口实现 ModelSerializer 使用
查看>>
NLPIR-ICTCLA2018分词用户大会线上抢票报名开始
查看>>
排序算法复杂度/稳定性总结
查看>>