文章目錄
- 1、簡述
- 2、優化點
- 2.1、記憶體處理
- 2.1.1、Windows的資源管理器
- 2.1.1.1、大圖示模式
- 2.1.1.2、超大圖示模式
- 2.1.1.3、其他模式
- 2.1.2、用Qt做的類似資源管理器的軟體
- 2.2、滑動處理
- 2.2.1、Windows的資源管理器
- 2.2.2、用Qt做的類似資源管理器的軟體
- 2.3、超大資料處理
- 2.4、縮略圖生成優化處理
- 2.4.1、視頻檔案
- 2.4.2、音樂檔案與圖片檔案
1、簡述
最近在做一個類似Windows的資源管理器的軟體,先測一下資源管理器的檔案加載處理程序,先學習一下再進行小小的超越,
我們做的改造主要對以下幾點進行優化:
- 記憶體優化處理
- 滑動優化處理
- 大資料優化處理
- 縮略圖生成優化處理
測一下才發現資源管理器這里的記憶體處理做的有點垃圾,它的大目錄加載的處理是真的垃圾,說它垃圾是因為如果機器配置不夠會直接把作業系統卡死,記憶體占用會一直增加,這里我自己的軟體做了優化,下面用資料說話吧……
測驗用的系統是Win10的作業系統來測驗的,測驗的作業系統資訊如下

2、優化點
2.1、記憶體處理
2.1.1、Windows的資源管理器
2.1.1.1、大圖示模式
4萬圖片,全部圖片加載程序占用500M,加載完初始化大小200M,圖片全部加載完差不多占用1.5個G,

2.1.1.2、超大圖示模式
4萬圖片,全部圖片加載程序占用500M,加載完初始化大小100多M,圖片加載一半左右差不多已經是5G多,普通電腦根本不夠它玩的,這臺測驗機器總共才8G記憶體,之前為了測驗這個把作業系統搞卡死機好幾次,這次滑了一半左右就停了,已經占用5G記憶體了,再來其他軟體就沒活路了,

2.1.1.3、其他模式
其他模式還沒測,有興趣的可以自己一個個測驗下

2.1.2、用Qt做的類似資源管理器的軟體
依舊是4萬圖片的目錄,全部圖片加載程序占用100M記憶體,加載完初始化大小160多M,動態加載在160-170M之間,
優化:滑動時,只有在顯示區域內的圖加載縮略圖顯示出來,已經加載的縮略圖進行釋放并用默認圖示代替,這樣即使快速滑動或者滑輪滾動,記憶體基本沒有變化,

2.2、滑動處理
2.2.1、Windows的資源管理器
實時加載并實時顯示,這樣說好也可以,因為可以動態顯示出部分圖片,說不好就是會卡滑動條,資料量一旦起來,Windows資源管理器做加載滑動時卡卡的,
2.2.2、用Qt做的類似資源管理器的軟體
這里我做了優化,因為快速滑動的時候沒必要實時加載出縮略圖,所以在滑動基本穩定后我們再進行縮略圖加載,
演算法優化:在X毫秒內,連續執行 N次 Y函式時,只執行最后一次的函式呼叫,
(這里的gif動圖猶豫生成的原因比真實效果慢些,對付看)

2.3、超大資料處理
我這里指的超大資料是10w以上的資料,如果用Windows本身的資源管理器,超大圖示模式,4W檔案的情況全部加載完,8G記憶體都讓他耗完了,就別提超大資料了,直接GG,我們這里的應對措施暫時應用翻頁的處理方式,如果不考慮單頁可承受記憶體的影響,最合理的應該是1w資料一頁,占用記憶體如果用我們的處理方式,差不多穩定在100M以下
2.4、縮略圖生成優化處理
2.4.1、視頻檔案
視頻檔案,Windows采用的是取視頻的第10s的幀,不足10s的取最后的幀,這樣的話,如果是電視連續劇的話,會導致該電視劇生成的所有縮略圖都一樣,如果想區分的話,可以用我的方法,取視頻中間幀,推薦用ff,大視頻檔案和小視頻檔案取第幾幀的時間大致一樣,
2.4.2、音樂檔案與圖片檔案
音樂和圖片縮略圖生成和Windows一致,音樂檔案的縮略圖藏在檔案的頭資訊里面,只有部分mp3格式的檔案里面包含此資訊,這個和windows原理一致,先讀取再生成
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/210072.html
標籤:其他
