效能記憶體優化

2021-10-04 08:50:35 字數 1069 閱讀 3702

整個對於linux**的優化,應該區分為從整個層面的系統優化,和從模組角度的演算法效能優化。最終追尋的優化是原來原理層面的追尋。linux系統的優化也是,屬於系統層面的優化。針對特定的場景要求根據優先順序做出取捨關係。

二、cpu執行效能

效能優化也就是下面的幾個策略:

1:用空間換時間。各種cache如cpu l1/l2/ram到硬碟,都是用空間來換時間的策略。這樣策略基本上是把計算的過程一步一步的儲存或快取下來,這樣就不用每次用的時候都要再計算一遍,比如資料緩衝,cdn,等。這樣的策略還表現為冗餘資料,比如資料鏡象,負載均衡什麼的。

2:用時間換空間。有時候,少量的空間可能性能會更好,比如網路傳輸,如果有一些壓縮資料的演算法(如前些天說的「huffman 編碼壓縮演算法」 和 「rsync 的核心演算法」),這樣的演算法其實很耗時,但是因為瓶頸在網路傳輸,所以用時間來換空間反而能省時間。

3:簡化**。最高效的程式就是不執行任何**的程式,所以,**越少效能就越高。關於**級優化的技術大學裡的教科書有很多示例了。如:減少迴圈的層數,減少遞迴,在迴圈中少宣告變數,少做分配和釋放記憶體的操作,盡量把迴圈體內的表示式抽到迴圈外,條件表達的中的多個條件判斷的次序,盡量在程式啟動時把一些東西準備好,注意函式呼叫的開銷(棧上開銷),注意物件導向語言中臨時物件的開銷,小心使用異常(不要用異常來檢查一些可接受可忽略並經常發生的錯誤),…… 等等,等等,這連東西需要我們非常了解程式語言和常用的庫。

4:並行處理。如果cpu只有乙個核,你要玩多程序,多執行緒,對於計算密集型的軟體會反而更慢(因為作業系統排程和切換開銷很大),cpu的核多了才能真正體現出多程序多執行緒的優勢。並行處理需要我們的程式有scalability,不能水平或垂直擴充套件的程式無法進行並行處理。從架構上來說,這錶再為——是否可以做到不改**只是加加機器就可以完成效能提公升?執行緒數量合適減少排程影響,執行緒最大利用率。減小鎖的使用粒度。

5:系統io方面改善io系統的效能, 減少系統呼叫記憶體拷貝次數。選用最優的系統呼叫方式,比如epool代替select。

記憶體優化:

1:減少頻繁的申請釋放記憶體,適當在建立時候申請記憶體,退出時候釋放記憶體。

2:對於需要頻繁申請記憶體的時候,改用記憶體池和執行緒池改善記憶體和效能。能用位表示就用位。

Linux效能優化 記憶體效能優化思路

目錄 記憶體效能指標 記憶體效能工具 如何快速分析記憶體的效能指標 系統記憶體使用情況 1.已用記憶體和剩餘記憶體 2.共享記憶體,通過tmpfs實現的,他的大小就是tmpfs使用的記憶體大小,這是乙個特殊的快取 3.可用記憶體是新程序可以使用的最大記憶體,包括剩餘記憶體和可 快取 4.快取包括,從...

Android效能優化 記憶體優化

記憶體優化 下面介紹一下常用的一些記憶體優化的方法 從慕課網學來的 資料結果優化 1,如果經常使用字串拼接的話,要用stringbuilder,避免直接使用使用 的方式 2,使用arraymap,sparsearray代替hashmap 3,避免記憶體抖動的情況 物件復用 1,復用系統自帶資源 2,...

效能優化 記憶體優化建議(RAM)

原因 service的執行需要浪費記憶體,而且系統傾向保留這個service從而保留serivce的程序。解決方法 最後使用intentservice代替普通的service,當service不使用了就殺死。情景 當載入乙個bitmap的時候,將bitmap的大小設定為當前螢幕畫素的大小就可以了。原...