基準測試優化循環 是做什麼的?
使用此技能將「讓它快20倍」或「嘗試50次遞迴優化」轉換為有界限、可測量的循環,從而真正改善系統。
必要基準
在進行優化之前,必須存在以下項目:
- 正在優化的操作;
- 必須保持通過的正確性閘門;
- 指標:牆鐘時間、p95 延遲、每秒處理行數、每次執行成本、記憶體用量、錯誤率;
- 當前基線;
- 搜尋預算:最大變體數、最大時間、最大花費、最大資料影響。
如果使用者要求不切實際的目標,請保留其野心,但將循環設為有界限且可測量的。
循環
- 測量基線。
- 根據證據找出瓶頸。
- 生成每次只測試一個假設的變體。
- 使用相同輸入形狀執行變體。
- 拒絕未通過正確性、安全性或可重複性的變體。
- 晉升最快的安全變體。
- 將勝利路徑編碼到腳本、命令、測試、設定或文件中。
- 重新執行基線和勝利者以確認差異。
變體表格
像這樣追蹤變體:
變體 | 假設 | 命令 | 時間 | 正確? | 備註
基線 | 當前路徑 | npm run job | 120 秒 | 是 | 穩定
批次-500 | 減少往返次數 | npm run job -- --batch 500 | 42 秒 | 是 | 獲勝者
並行-8 | 更多工作執行緒 | npm run job -- --workers 8 | 31 秒 | 否 | 受到速率限制
遞迴搜尋
對於遞迴或超參數調整工作:
- 將每次運行持久化到記錄中;
- 與先前的獲勝者比較,而不僅僅是前一次運行;
- 保留驗證檢查或回放檢查;
- 當改善進入雜訊區、正確性失敗、成本超出預算,或搜尋開始變更的變數多到無法解釋時停止。
使用「最佳測量到的安全變體」等措辭,而非「全域最優」,除非搜尋空間確實是窮舉的。
晉升閘門
變體不能成為新的預設值,直到:
- 正確性測試通過;
- 效能差異已重複出現或得到解釋;
- 回滾方式明確;
- 變更已編碼到原始碼控制或持久化的操作手冊中;
- 最終總結包含確切的命令和測量結果。