2012年12月23日 星期日
premature optimization is the root of all evil
翻成中文的意思就是說太早做最佳化是萬惡之根源, 英文出自Don Knuth:
Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%.
意思是說"程式設計師浪費太多時間思考或擔心他們專案非關鍵部份的效能, 當考慮到在除錯和維護程式時, 這些效能方面的努力實際上有個強烈負面影響. 我們應該忘記小的效能, 大約97%情況: 過早做最佳化是萬惡之根源. 我們不應該放棄我們在關鍵3%的機會"
實際上"過早做最佳化是萬惡之根"源可從三個方面來看:
1. 大部份的程式是不需要做最佳化: 要做最佳化是因為測試時發現有效能上的問題, 所以才進行效能調整. 若效能已經符合需要, 何必浪費時間在效能上面? 很多情形是調整資料庫設定或伺服器軟體設定, 或是硬體設備. 當前述做法都失效時, 再來進行效能調整.
2. 在系統未開發完成之前, 找出要關鍵那3%是很困難的: 只有經由實際測試, 才能分析出系統效能瓶頸在那, 然後再對此部份進行最佳化.
3. 程式可讀性問題: 要調整程式執行效能, 有時要用可讀性較差的寫法處理. 這對於開發中的程式會造成一些困擾.
不過也別誤解Knuth大師的意思, 以為程式開始可以隨性的亂寫, 最後才調整. 那包證你的程式碼到後來就會失控, 很難再維護和擴充.
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言