重構並不意味著性能更好,但是重構可以讓性能優化更容易!!!
關於寫出高性能代碼
寫出高性能代碼的前提:首先你得有個可以調整的程序。
就像別人問你如何和女朋友更好相處一樣,首先你得有個女朋友。
寫出高性能代碼的方法:
1、時間預算法
給每個組件分配一定的資源——包括時間和執行軌跡,每個組件不能超過自己的預算。
通常用於要求極高的實時系統。
2、持續關注法
這種方法要求任何程序員在任何時間做任何事情時,都要保證系統的高性能。
這種方式很常見,感覺很有吸引力,但通常不會起太大作用。(《重構》作者原話)
任何修改如果是為了提高性能,通常會使程序難以維護,繼而減緩開發速度。
而且性能改善一旦被分散到程序各角落,每次改善都只不過從對程序行為的一個狹隘的角度出發而已。
一個程序通常大半的事件都耗費在一小半代碼上,如果你一視同仁優化所有代碼,90%的優化都是白費勁,因為你優化的代碼很少執行。
你花時間是為了讓程序運行更快,如果缺乏對程序的清楚認識而花費時間,那些時間就被浪費掉了。
3、熱點提升法(本人的命名)
采用這種方法,編寫代碼的時候不需要對性能投以特別的關注,直至進入性能優化階段——通常在開發後期。
在性能優化階段:
首先用某種度量工具監控程序的運行,找到消耗大量時間和空間的的代碼,也就是"熱點"了。
然後去優化這些熱點,就可以花費較少的時間取得較好的優化效果
關於重構對性能優化的幫助
首先,一個構造良好的代碼讓你有足夠的時間進行性能調整,因為它你可以更快速地添加功能,也就有更多時間用在性能問題上(准確的度量則保證你把這些時間用在恰當的地點)。
其次,面對構造良好的程序,你在進行性能分析時便有較細的粒度,於是度量工具把你代入范圍較小的程序段落中,而性能的調整也比較容易些。由於代碼更加清晰,因此你能更好地理解自己的選擇,更清楚哪種調整起關鍵作用。