編寫完成的代碼,由於編寫上的某種原因,有時候會出現運行速度慢的現象。那麼怎麼才能提高代碼的運行效率呢?不同的人有不同的代碼最佳化方式,一般開發人員將代碼中的低下寫法改正後,代碼就能滿足效能需要,而進階的開發人員,則會在更高層次上對代碼、代碼結構進行重構。總之,方式林林總總,下面就是自己在一次代碼最佳化過程後,總結的各種最佳化策略。
1.首先,將代碼中的各種低下寫法統統改正。什麼是低下寫法?比如,頻繁的裝箱、拆箱,頻繁的字串+-等等。
2.重點改進程式的迴圈品質。代碼中經常出現各種迴圈,而迴圈是造成代碼運行效率低下的最重要原因(之一)。從而改進迴圈代碼,提升迴圈效率就成了改進代碼品質、提升代碼運行效率的關鍵因素之一。經常犯的錯誤有:for迴圈中找到匹配值後,還不中斷迴圈,繼續遍曆。能用foreach的,還在千篇一律的使用for。還有一個比較有效策略是:找到,並處理完當前匹配項後,對迴圈列表進行刪除該項操作,以便減少迴圈列表長度,這樣也可以提升迴圈效率。減少遞迴使用也行之有效(此次就是在這裡最佳化後,速度出現明顯提升)。另外一種策略就是利用多線程、並行運算,這樣也能很明顯的提升系統的處理效率,但是若僅僅只有少量的迴圈,倒還不致於就用上並行計算的。
3.還有,可以對系統中經常使用(並且小體積)的對象及變數進行緩衝。但是緩衝本身是把雙刃劍,並不是一味的使用緩衝就可以萬事大吉。濫用緩衝的一個致命後果就是程式的記憶體佔用一直很高,從而導致整體伺服器很忙碌,這樣一來似乎也不厚道,因為你佔用記憶體多了,可供其他程式使用的記憶體就相應少了。另一個就是要處理好緩衝失效問題,不然你僅僅用了幾次對象,就讓對象一直存在,這樣對對象本身、程式都是不負責任的。
4.代碼的結構。這個是個很模糊的話題,沒法說的很清楚。但是有一點很關鍵。當你窮盡所有的程式碼片段最佳化辦法,還是不能達到要求時,你就要考慮代碼結構的問題了。最佳化代碼結構,就是要求你跳出以前的代碼編寫思路,要麼在原有的代碼基礎上進行擴充或者嫁接,從而畫龍點睛,最佳化代碼的整體結構。若時間足夠,還可以對原有代碼推倒重來,當然,你換用另一種代碼思路時,必須對新的代碼思路有瞭解,有驗證才行。否則花費了很多時間,寫了一種新的處理方法,效率卻不盡人意。
5.調整資料庫結構。這個略。
6.環境問題,比如更新硬體(當然是廢話)。
總之,代碼最佳化是個經驗問題,是個責任心問題,還是個自我要求的問題、更是個自我提高問題。無論發生在何時何地,當需要進行代碼最佳化時,都要明確代碼的現狀,最佳化的目標,以及各種最佳化的措施,只有在明確的目標,正確的最佳化方向,合適措施等等幾個因素的合理疊加。最佳化代碼才會成為開發人員經常吃的一盤菜,為開發人員提供更好的慰藉和鼓勵。