第26章讀書筆記

來源:互聯網
上載者:User
26章code-tuning techniques讀書心得

書中列舉了很多最佳化代碼的執行個體,講解的很清晰。我覺得沒有必要把它再列舉出來了,下面列出幾點映像深刻的幾點。

1. 最佳化代碼在不同語言之間效果不同

  • Unswitching

首先看一個關於迴圈的例子,因為迴圈要執行多次,所以如果可以把迴圈中的判斷移出迴圈的話,最好移出。代碼如下:

這段代碼把判斷放在了迴圈中。改寫後如下:

改進之後效率提升的效果如下:

這裡的資料都是書中的資料,根據硬體,編譯器都有不同。這裡的資料都是以秒計數,估計拿自己的電腦測試資料肯定又會不同。可以看到每種語言經過最佳化後效能提升都不相同,所以使用不同程式設計語言最佳化後的效能可能跟我們預期的都不相同。

  • 數組取數

再看一個數組引用的例子,通常對數組取數的效率會比變數稍低。起碼數組要計算位移再賦值。那麼可以通過儲存對引用陣列變數來提高效率。代碼如下:

最佳化後如下:

測試結果如下:

結果令人非常吃驚,c++中效率不升反降。應該和c++的編譯器有關。在這裡typeCount為10,levelCount為100.

  • 總結

對程式的最佳化不要自以為是,每種語言每種編譯器都是不同的!所以對程式最佳化之後一定要用一定的方法對最佳化進行測試。

2. 最佳化代碼的博弈

世界上沒有東西十全十美,為了提升效能,有時不得不犧牲程式的可讀性可維護性等。就像會計中的有借必有貸,提升了一方面必然有時會下降另一方面。我們得在這之間做一個選擇,除了達到效能要求之外,還要在最大程度上提高程式品質。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.