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