- 現代CPU性能分析與優化
- (美)丹尼斯·巴赫瓦洛夫
- 625字
- 2023-11-09 19:34:49
1.3 什么是性能分析
你有過與同事就某一段代碼的性能爭論的經歷嗎?如果有過,那你肯定了解預測哪部分代碼表現最優是一件多么困難的事。現代處理器中有非常多的變化組件,即使代碼層面很小的改動都可能引發顯著的性能變化。這就是為何本書給大家的第一個建議是:一定要測量。
個人經驗 我看到不少人依賴直覺來優化應用程序,他們通常在這里或那里進行隨機的修復,最后卻對應用程序性能沒有任何實質性的影響。
經驗不豐富的開發者經常修改代碼,希望提升性能。例如,設想i的前一個值不會被使用,從而把i++替換成++i。這種改變通常沒有任何實質效果,因為每一個合格的編譯器都能識別出i的前一個值沒有被使用,并且無論如何都會去除冗余的數據。
許多過去廣泛流傳的有效優化小技巧,已經被現代編譯器學會了。此外,有些人會過度使用傳統的位處理技巧,其中一個例子是使用基于XOR的變量交換,但實際上,簡單的std::swap就能產生更快的代碼。這些隨機修改可能并不會提升應用程序的性能,正確找到需要修改的位置需要進行仔細的性能分析,而不是依靠直覺和猜測。
業界有許多性能分析方法論[12],但它們并不是總能幫助你找到方向。本書中介紹的專門針對CPU的性能分析方法有一個共同點:它們都需要收集程序運行的某些信息。程序源代碼中的任何修改,都是根據對收集到的數據進行分析得出的。
定位性能瓶頸只是工程師工作的一半,而另一半工作是用合理的方法解決它。有時,改變一行程序源代碼就會顯著地提升程序性能。性能分析和性能優化就在于找到這一行代碼并進行修改!
推薦閱讀
- C語言程序設計案例教程
- 程序員修煉之道:程序設計入門30講
- 深入淺出數據科學:Python編程
- Visual C++串口通信開發入門與編程實踐
- SQL Server 2016從入門到精通(視頻教學超值版)
- GameMaker Programming By Example
- 3D少兒游戲編程(原書第2版)
- Mastering KnockoutJS
- Swift Playgrounds少兒趣編程
- Java并發編程之美
- Hacking Android
- Go語言入門經典
- Unity Android Game Development by Example Beginner's Guide
- HikariCP數據庫連接池實戰
- Python Penetration Testing Essentials