1. 資源與時間的兌換
cache 空間資源與時間的兌換
- 提前計算,cache結果
- cache到記憶體中, 更快的記憶體空間換取時間
- 資料庫設計中的反規範化設計, 通過增加備援字段,減少子查詢 -- 空間換取時間
- 網頁中的靜态化cache, 動态網頁生成結果cache -- 空間換取時間
叢集,讀寫分離,主從庫等. 計算資源與時間的兌換
- 3台機器的工作,配置設定給5台機器做.
- 資料庫的讀寫分離, 主從設計
2. 盡可能合理的利用硬體特性
- 彙編語言中使用寄存器
- 記憶體cache
- 存儲中的磁盤RAID
- HD硬碟與SSD硬碟的選擇
- 圖像計算中盡可能的使用顯示卡特性
- 針對特定場景的硬體設計來加速計算或者執行, 如: GPU, AI智能晶片, DSP等
3. 流程中各個環節的均衡,并行和順序的調整
- 尋找性能瓶頸并且将計算前移或者後移
- 系統線上更新時引起的更新風暴, 分批,分區,分時更新.
- 集中的事情分散開來做. 如: 秒殺中的排隊(緩存, 分散, 水準擴充) -- 并發
- 硬體便宜, 好的優化人員難找. 添加更多的硬體來提高系統的吞吐能力. -- 均衡
- DNS僅網址和IP的查找, 應用鍊中工作量小, 可以考慮把動态服務分派, 負載均衡的工作放到dns中.
4. 減少不必要的浪費
多給, 需要2個字段給了5個字段
-
網絡中傳送不必要的資料.
比如: 開發人員為了省事, 把這個表的資料集傳送給了前端, 而實際上前端隻是需要id和name兩個字段.
多做, 備援的計算步驟
- 不必要的循環比較
-
可精簡的計算
比如: 動态網頁中相對穩定的頁面資訊. 不用每次動态生成. 可以根據資料更新頻率, 1小時? 4小時? 動态生成一次, 儲存為靜态網頁. 減少了計算頻率, 減少了不必要的計算資源浪費; 同時, 空間換取時間.