From Wikipedia, the free encyclopedia
軟件最佳化(粵拼:jyun5 gin2 zeoi3 gaai1 faa3;英文:software optimization)指將一隻軟件改到更加有效率,等個系統行起上嚟唔使用咁多系統資源。簡單例子有檢查吓隻軟件嘅源碼,確保段源碼完全冇任何多餘(即係有同冇都唔會影響隻軟件嘅功效)嘅碼-想像家陣編寫緊一隻網上遊戲嘅程式,隻遊戲好受歡迎,有數以十萬計嘅玩家,如果個程式嘅源碼當中有一行多餘嘅碼,噉十萬幾位玩家玩起上嚟部伺服器就要行多十萬幾行多餘嘅碼,會搞到部伺服器嘅負責大咗好多。因為噉,最佳化喺實際嘅軟件工程工作上係一個相當受重視嘅課題[1]。
以下嘅內容,假設讀者已經識嗮電腦程式編寫嘅基礎概念。
軟件最佳化係軟件工程上嘅一樣重要工序:軟件(software)泛指用嚟做某啲特定功能嘅電腦程式,例如一隻電子遊戲就係一隻用嚟做娛樂用途嘅軟件;齋靠日常觀察就可知,部電腦要行一個電腦程式,梗要或多或少噉花啲時間同埋記憶體,而事實表明,一個寫程式嘅人寫程式嗰陣用嘅手法,會對「個程式要行幾耐先行得完」(睇埋編譯期同執行期等嘅概念)或者「個程式要用幾多記憶體」造成具體影響[2][3]。
舉個簡單例子,想像家陣想寫個程式,個程式要攞個數 a
做 input,output 出嗮所有「細過或者等如 a
、又係 10 嘅倍數」嘅數,即係[4]
input
係 200,就要出 200, 190, 180, 170, 160,...
噉嘅一列數;input
係 150,就要出 150, 140, 130, 120, 110,...
噉嘅一列數;想像下面段虛擬碼:
a = 200; # 設 a 做 200 while (a > 0) # 可以睇埋 while 迴圈嘅概念。 { b = 10; if (a % b == 0} # 如果 a 係 b 嘅倍數,print a 出嚟睇。 print(a); a -= 1; # a 數值下降 1 }
上面段碼查實唔係咁有效率-b = 10
呢個步驟唔使喺個 while 迴圈每個圈度都行一次,而因為段碼有咗不必要嘅步驟,就搞到段碼行起上嚟慢咗。上面段碼可以改做:
a = 200; b = 10; while (a > 0) { if (a % b == 0} print(a); a -= 1; }
-b = 10
呢個步驟就變成淨係做一次咁多,令到段碼效率高咗。軟件最佳化指緊嘅就係[2]:p. 1[5]:
「 | 」 |
上面攞嚟做例子嗰個程式好簡單。就算做咗最佳化,齋靠肉眼睇唔多覺佢行得快咗。不過專業軟件工程上整嗰啲軟件,好多時閒閒哋成幾萬行碼咁長,有啲甚至仲有成上億行碼[6]。對於噉嘅軟件嚟講,如果佢哋每 50 行碼就要嘥多 10 毫秒(1 毫秒 = 0.001 秒)行,已經會對佢實際用嗰陣嘅表現造成明顯影響。因為噉,專業嘅軟件工程師都相當關注最佳化嘅問題,會諗好多技巧想令啲程式更加有效率。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.