(1)編譯器優化。適當開啓編譯器優化選項,在編譯階段提高性能。gcc提供優化選項-On會自動對應用程序的代碼進行優化。
(2)算法優化。使用複雜度更低的算法,能夠顯著加快處理速度。在數據比較大的狀況下,能夠用O(nlogn)的排序算法(如快排、歸併排序等),代替O(n^2)的排序算法(如冒泡、插入排序等)。
(3)異步處理。使用異步處理,能夠避免程序由於等待某個資源而一直阻塞,從而提高程序的併發處理能力。把輪詢替換爲事件通知,就能夠避免輪詢耗費CPU的問題。
(4)多線程代替多進程。相對於進程的上下文切換,線程的上下文切換並不切換進程地址空間,所以能夠下降上下文切換的成本。
(5)善用緩存。常常訪問的數據或者計算過程當中的步驟,能夠放到內存中緩存起來,在下次用時就能直接從內存中獲取,加快程序的處理速度。node
(1)CPU綁定:把進程綁定到一個或者多個CPU上,能夠提升CPU緩存的命中率,減小跨CPU調度帶來的上下文切換問題。
(2)CPU孤立:將CPU分組,並經過CPU Affinity機制爲其分配進程。指定CPU由特定進程獨佔,不容許其它進程再使用。算法
使用Linux cgroups來設置進程CPU使用上限,能夠防止因爲某個應用自身的問題,而耗盡系統資源。緩存
使用nice調整進程優先級,正值調低優先級,負值調高優先級。適當下降非核心應用的優先級,增高核心應用的優先級,能夠確保核心應用獲得優先處理。多線程
不管軟中斷仍是硬中斷,中斷處理程序均可能會耗費大量CPU資源。開啓irqbalance服務或者配置smp_affinity能夠把中斷處理過程自動負載均衡到多個CPU上。架構
NUMA架構處理器會被劃分爲多個node,每一個node都有本身的本地內存空間。NUMA優化可讓CPU儘量只訪問本地內存。併發