靚麗時尚館

位置:首頁 > 健康生活 > 心理

優化程式的特點

心理4.63K
優化程式的特點

1、程式碼調整

程式碼調整是一種區域性的思維方式基本上不觸及演算法層級它面向的是程式碼,而不是問題

所以:語句調整,用匯編重寫、指令調整、換一種語言實現、換一個編譯器、迴圈展開、引數傳遞優化等都屬於這一級

這個級別的優化需要掌握大量的小的優化技巧和知識,需要不斷的積累

簡單的語句調整,公共表示式提取、廢程式碼刪除等當前的很多編譯器也能做到了,但也需要了解一些編譯器的優化能力使自己的程式碼配合編譯器做好優化

用匯編重寫並不是簡單把高階語言改寫為彙編實現,那樣寫的彙編很可能沒有當今的編譯器產生的程式碼好,所以如果決定用匯編實現,那就應該按照彙編的角度來規劃自己的實現,適當的參考編譯器生成的彙編碼也是可取的(特別是新手,我也一樣)在某些領域,使用CPU的新特性和新的指令集等將產生巨大的效能收益,這些地方經常採用彙編來實現。

2、新的視角

新的視角強調的重點是針對問題的演算法即選擇和構造適合於問題的演算法(氣泡排序還是快排的選擇問題是這一級早就應該完成的)很多經典演算法都對問題作了一些假設(包括我們當前已經完成的演算法實現),而在面對實際問題時“新的視角”提示我們應該重新檢視這些假設,並嘗試不同的思考問題的角度,尋求適合於問題的新演算法

發掘問題的本來意義,從不同的角度思考面對的問題,使用適合於問題的的演算法 嘗試打破一些規則,發掘和懷疑自己的某些假定,恢復問題的本來面目

3、表驅動狀態機

將問題抽象為另一種等價的數學模型或假想機器模型,比如構造出某種表驅動狀態機這一級其實是第二級的延伸,只是產生的效果更加明顯,但它有其本身的特點(任何演算法和優化活動都可以看作是他的投影)這一級一般可以產生無與倫比的快速程式

要達到這一級需要大量修煉的並且思考時必須放棄很多已有的概念或者這些概念不再重要,比如:變數、指標、空間、函式、物件等,剩下的只應該是那個表驅動狀態機 我想把這種境界描述為:空寂中,一些輸入驅動著一個帶有狀態的機器按設定好的最短路線運轉著除此之外have nothing 既:把解決一個問題的演算法看作一個機器,它有一些可變的狀態、有一些記憶、有一些按狀態執行的規則,然後一些輸入驅動這個機器運轉這就是第三級要求的思考優化問題的切入點,也就是尋找一部機器,使它執行經過的路徑最短(可能是速度也可能是空間等等)

程式優化是指對解決同一問題的幾個不同的程式,進行比較、修改、調整或重新編寫程式,把一般程式變換為語句最少、佔用記憶體量少、處理速度最快、外部裝置分時使用效率最高的最優程式

標籤:優化