中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

看一名 KDE 開(kāi)發(fā)者如何使用 C++17 為項(xiàng)目提升巨大速度

2018-07-16    來(lái)源:oschina

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用
KDE

參與 KDE 和 openSUSE 開(kāi)發(fā)的開(kāi)源項(xiàng)目開(kāi)發(fā)者 Antonio Larrosa 一直在獨(dú)立開(kāi)發(fā)著一個(gè)名為 Bard 的命令行音樂(lè)管理器。他還寫(xiě)了一篇有趣的帖子來(lái)講述他如何將這個(gè)軟件中一些操作的速度提升了大約八千倍。

特別是,Antonio 專注于加速在用戶的本地音樂(lè)收藏中尋找歌曲/音樂(lè)副本的過(guò)程。最初的代碼通過(guò) Python 實(shí)現(xiàn),后來(lái)變成了經(jīng)過(guò)優(yōu)化的 C++ 代碼。令人驚訝的是,優(yōu)化調(diào)整過(guò)的 C++ 代碼要比 Python 快得多 —— 如果你希望了解作者為實(shí)現(xiàn)這個(gè)結(jié)果所做出的調(diào)整,以及所采取的各種步驟帶來(lái)的影響,不妨看看作者所寫(xiě)的博客。

他沒(méi)有用 C++ 重寫(xiě)整個(gè)程序,而是使用了 Boost.Python 庫(kù),該庫(kù)使得 C++ 和 Python 代碼之間可進(jìn)行無(wú)縫的操作。從這時(shí)開(kāi)始,Antonio 開(kāi)始編寫(xiě)相關(guān)的 C++ 代碼。特別是,他專注于 C++ 17 并使用了線程。進(jìn)一步提升性能的操作是調(diào)整 C++ 的編譯器標(biāo)記(compiler flags),并將 GCC 從 7.3 版本切換到 8.1 版本。

長(zhǎng)話短說(shuō),“作者的最后一次代碼提交也最后一次提升了速度,達(dá)到 7998 倍 —— 36680首/秒(對(duì)比速度),并可在13秒內(nèi)完全處理完一個(gè)1000首歌曲的音樂(lè)集。”有關(guān)更詳細(xì)具體的技術(shù)細(xì)節(jié)請(qǐng)查看作者原博客,也可以訪問(wèn)他的 Bard 音樂(lè)管理器項(xiàng)目以了解更多。

最后作者也就這次優(yōu)化總結(jié)了一些心得:

  • 花一些時(shí)間思考如何優(yōu)化代碼 —— 這件事十分值得開(kāi)發(fā)者去做

  • 如果你使用 C++ 并能夠使用現(xiàn)代編譯器,那么請(qǐng)使用 C++ 17,它可以讓你更有效地編寫(xiě)更好/更優(yōu)雅的代碼。Lambdas、結(jié)構(gòu)化綁定、constexpr 等特性真的值得花時(shí)間閱讀它們

  • 允許編譯器為你做的事情。,它可以對(duì)你的代碼進(jìn)行優(yōu)化而無(wú)需你的任何努力

  • 盡可能少地復(fù)制/移動(dòng)數(shù)據(jù)。這個(gè)操作很慢,很多時(shí)候只需要在開(kāi)發(fā)之前考慮一下數(shù)據(jù)結(jié)構(gòu)就可以避免這個(gè)操作

  • 盡可能使用線程

  • 最后,可能也是最重要的:量化一切指標(biāo)。你不能改進(jìn)你無(wú)法量化的東西(嗯,技術(shù)上你可以,但你肯定不知道)

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

標(biāo)簽: 代碼 開(kāi)發(fā)者

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:swagger-bootstrap-ui 1.7.5,Swagger前端 UI 實(shí)現(xiàn)

下一篇:Jenkins 2.132 發(fā)布,可擴(kuò)展的持續(xù)集成引擎