經驗豐富的程式設計師常嘗試手動優化,例如合併函式以減少呼叫開銷,但在 .NET 中這往往阻礙 JIT 編譯器發揮最佳效能。最佳策略是用最清晰的方式撰寫程式碼,其餘交給 JIT。
.NET 執行階段逐函式呼叫 JIT 編譯器,將 IL 轉換為機器碼。啟動時不編譯整個程式,從未呼叫的函式永不編譯。將程式碼拆分為更多小函式,可最小化無關程式碼的編譯開銷。
單一大型函式 BuildMsg 包含 if/else 兩條路徑,首次呼叫時兩條皆被編譯:
public string BuildMsg(bool takeFirstPath)
{
StringBuilder msg = new StringBuilder();
if (takeFirstPath) { ... }
else { ... }
return msg.ToString();
}
拆分為小函式後,JIT 僅編譯實際執行的路徑:
public string BuildMsg(bool takeFirstPath)
{
if (takeFirstPath) return FirstPath();
else return SecondPath();
}
這樣避免了編譯永不執行的分支,提升啟動效能與記憶體使用效率。