軟體優化(速度問題)

2021-06-23 08:54:27 字數 1422 閱讀 7545

環境:linux

軟體優化

前台後台

當軟體執行檔案越來越大,如果啟動時一次性載入整個執行檔案,那麼軟體的啟動速度會很慢。我們可以把軟體分成前台和後台部分(服務或者deamon程式),在軟體啟動前,後台部分已經常駐記憶體,這樣軟體啟動時,載入的**和資料可以明顯減少,軟體啟動的速度就提高了。

so動態庫

軟體一般都要依賴很多第三方庫檔案,當軟體啟動時,載入器需要在依賴路徑裡面查詢這些動態庫,並載入這些動態庫,並解析動態庫裡面函式符號。當軟體依賴的動態庫很多的時候,這是乙個非常耗時的過程。我們可以通過把有些動態庫轉成靜態庫,或者把2個相關動態庫合併成乙個動態庫。

release版本

軟體debug版本裡面有一些資訊列印,和很多除錯相關的資訊,這些都會影響軟體啟動速度。軟體release版本編譯器會有很多優化,可以提高軟體啟動速度。

演算法和計算量

演算法重要性這裡不再說明。這裡舉例硬體效能提高10倍後,軟體計算能力能提高多少。

如果演算法複雜度是o(n), 那麼 n2 / n1 = 10, n2 =10 * n1, 演算法快了10倍。

如果演算法複雜度是o(n^2), 那麼 n2^2 = 10 * n1^2,n2 = 10^(1/2) n1, 演算法快了3.16倍。

如果演算法複雜度是o(2^n),那麼 n2 = n1 + 3, 演算法比原來多算3個數。 當演算法複雜度是指數級,硬體效能提高10倍,對軟體效能影響不大(只多算3個)。

硬體加速

軟體大多有gui介面,如果可以發揮顯示卡gpu的作用,可以很大提高軟體執行速度。這是硬體加速的很好例子。cpu現在也增加了硬體加速的設計,需要我們進一步發揮硬體加速能力。

快取快取可以顯著提高軟體執行速度。例如瀏覽器的網頁快取,開啟硬碟檔案的檔案快取,顯示卡的圖形快取。

預處理例如chrome預處理功能(加快chrome網域名稱解析),與其在開啟頁面時等待dns解析網域名稱,不如讓chrome在使用者瀏覽網頁的過程中,主動進行網域名稱解析。比起傳統的瀏覽器,這項功能使chrome首次訪問乙個網域名稱時,平均節省250ms的載入時間。

大記憶體現在64位系統支援幾百g的記憶體,記憶體訪問速度遠大於硬碟,所以軟體可以多使用記憶體加快軟體處理速度。例如red had enterprise linux (rhel)6.4的64位版本。

多執行緒把軟體io部分作為乙個執行緒,計算部分作為乙個執行緒,gui部分作為乙個執行緒。提煉出可並行的處理,並改為執行緒。

超多小檔案

例如磁碟碎片會使系統的總體效能變慢。當檔案分成許多碎片時,計算機在開啟檔案時必須搜尋硬碟(以將其重新拼湊在一起)。這會顯著減慢軟體執行速度。

當我們在windows上拷貝資料夾時,如果資料夾裡面有超多小檔案(例如大專案的源**),拷貝速度是非常非常慢:(

ui設計

先顯示部分,然後逐步顯示。

當程式失去響應的時候,可以快速關閉程式。軟體實現過程中,某些io操作需要設定等待時限,通過定時器結束等待時間過長的io操作。

專案新增記憶體表優化軟體速度

最近做了乙個企業專案,裡面有乙個能效顯示的功能,通過專業的processbook軟體顯示,每次開啟都會去讀取資料庫中的每個點的最新值。一開始使用的時候,速度還可以,但是隨著時間的推移,發現資料庫裡面資料越來越多,導致每次開啟processbook都要等很久,十多分鐘,時間花在資料庫select語句上...

網頁速度優化

一 我們需達解決的麻煩 減小被請求檔案大小,減少請求資料占用的網路頻寬.讓使用者更快的看到想要的結果.提高客戶端渲染速度.讓瀏覽器同時能請求更多的資料.提高伺服器相應速度.通過版本化控制客戶端cache.二 如何解決我們的麻煩 a.如何減少http請求數 合併js檔案跟css檔案。合併框架以及相對變...

優化網頁速度

1 優化2 影象格式的選擇 一般在網頁上使用的格式有三種,jpg png gif.三 種格式的具體技術指標不是這篇文章 的內容,我們只需要知道在什麼時候應該使用什麼格式,以減少網頁的載入時間。1 jpg 一 般用於展示風景 人物 藝術照的攝影作品。有時也用在電腦截圖上。2 gif 提供的顏色較少,可...