1 cpu優化: 快取
為了提高程式的執行的效能,現代cpu在很多方面對程式進行優化:
例如:cpu的快取記憶體,盡可能的避免處理器訪問主記憶體的時間開銷,處理器大多會利用快取來提高效能
cpu快取分為**快取:
l1 一級快取是cpu第一層快取記憶體 分為資料快取和指令快取 一般伺服器的cpu在32-4.96kb
l2 為了提高cpu的運算速度,在cpu外部放置高速儲存器 即二級快取
l3 現在都是內建的,作用,可以進一步降低記憶體的延遲,同時提公升大資料計算時候處理器的效能,一般死多核公用l3快取
多處理器時候 單個cpu對快取中的資料進行改動了,需要通知給其他的cpu 也就意味者,cpu的處理器要控制自己的讀寫操作
還要監聽其他cpu的發出的通知,從而保證快取的一致性
2 cpu優化:指令重排
指令重排的場景:當cpu的寫快取時候發現快取區域正在被其他cpu占用,為了提高cpu的效能,可能會將後面的都快取指令優先執行
並非隨便重排:需要遵循as-if -serial語義
as-if -serial語義是指: 不管怎麼重排序,程式的執行結果不會被改變,編譯器和處理器都會遵循這個語義
也就是說,編譯器和處理器不會對資料存在對的依賴關係的操作做重排序
存在問題:
1 cpu快取記憶體下問題:
快取中的資料與主記憶體的資料並不是實時同步的,各個cpu間的快取資料也不是實時同步,各個cpu所看到的同一記憶體資料可能不一致
2 指令重排:
雖然遵循的as-if -serial 語義 僅僅在單個cpu自己執行的情況下保證結果正確
多核多執行緒 中,指令邏輯無法分辨因果關聯 可能會出現程式亂執行,導致程式執行結果錯誤
解決方法: cpu提高記憶體屏障
1 寫記憶體屏障: 在指令後插入store barrier,能讓寫入快取的最新資料更新寫入主記憶體,讓其他執行緒可見
強制寫入主記憶體,這個現實呼叫,cpu就不會因為效能問題去對指令重排
2 讀記憶體屏障:在指令之前插入load barrier 可以讓快取快取中的資料實現,強制從新主記憶體載入資料
強制讀取主記憶體內容,讓cpu快取保持與之記憶體保持一致,避免了快取導致的一致性問題
unity效能優化 CPU
影響效能的因素 對於乙個遊戲來說,有兩種主要的計算資源 cpu和gpu,它們會互相合作,來讓我們的遊戲可以在預期的幀率和解析度下工作。cpu負責其中的幀率,gpu主要負責解析度相關的一些東西。本篇會介紹cpu的優化技巧 作用 計算。主要是在蒙皮骨骼計算,布料模擬,頂點動畫,粒子模擬等,還有在各種頂點...
常用的效能優化手段(記憶體優化方法)
1.使用 arc 進行記憶體管理,arc 是 ios 提供的採用自動引用計數方式進行管理記憶體的一種手法,它避免了最常見的忘記釋放物件記憶體而引起的記憶體洩漏問題。它的工作原理是編譯器會自動的為你管理 retain 和 release 過程。2.復用 reuseidentifier,在使用單元格時應...
Linux效能優化 CPU優化(二)
cpu 使用率,就是除了空閒時間外的其他時間佔總 cpu 時間的百分比,用公式來表示就是 為了計算 cpu 使用率,效能工具一般都會取間隔一段時間 比如 3 秒 的兩次值,作差後,再計算出這段時間內的平均 cpu 使用率,即 工具 工具 perflinux 2.6.31 以後內建的效能分析工具。它以...