文章目錄
一、簡述
最近在作一個相似Windows的資源管理器的軟件,先測一下資源管理器的文件加載處理過程,先學習一下再進行小小的超越。算法
咱們作的改造主要對如下幾點進行優化:windows
- 內存優化處理
- 滑動優化處理
- 大數據優化處理
- 縮略圖生成優化處理
測一下才發現資源管理器這裏的內存處理作的有點垃圾,它的大目錄加載的處理是真的垃圾。說它垃圾是由於若是機器配置不夠會直接把操做系統卡死,內存佔用會一直增長,這裏我本身的軟件作了優化。下面用數聽說話吧……函數
測試用的系統是Win10的操做系統來測試的,測試的操做系統信息以下學習
二、優化點
2.一、內存處理
2.1.一、Windows的資源管理器
2.1.1.一、大圖標模式
4萬圖片,所有圖片加載過程佔用500M,加載完初始化大小200M,圖片所有加載完差很少佔用1.5個G。
測試
2.1.1.二、超大圖標模式
4萬圖片,所有圖片加載過程佔用500M,加載完初始化大小100多M,圖片加載一半左右差很少已是5G多,普通電腦根本不夠它玩的。這臺測試機器總共才8G內存,以前爲了測試這個把操做系統搞卡死機好幾回,此次滑了一半左右就停了,已經佔用5G內存了,再來其餘軟件就沒活路了。
大數據
2.1.1.三、其餘模式
其餘模式還沒測,有興趣的能夠本身一個個測試下
優化
2.1.二、用Qt作的相似資源管理器的軟件
依舊是4萬圖片的目錄,所有圖片加載過程佔用100M內存,加載完初始化大小160多M,動態加載在160-170M之間。spa
優化:滑動時,只有在顯示區域內的圖加載縮略圖顯示出來,已經加載的縮略圖進行釋放並用默認圖標代替。這樣即便快速滑動或者滑輪滾動,內存基本沒有變化。
操作系統
2.二、滑動處理
2.2.一、Windows的資源管理器
實時加載並實時顯示。這樣說好也能夠,由於能夠動態顯示出部分圖片,說很差就是會卡滑動條,數據量一旦起來,Windows資源管理器作加載滑動時卡卡的。視頻
2.2.二、用Qt作的相似資源管理器的軟件
這裏我作了優化,由於快速滑動的時候不必實時加載出縮略圖。因此在滑動基本穩定後咱們再進行縮略圖加載。
算法優化:在X毫秒內,連續執行 N次 Y函數時,只執行最後一次的函數調用。
(這裏的gif動圖猶豫生成的緣由比真實效果慢些,對付看)
2.三、超大數據處理
我這裏指的超大數據是10w以上的數據。若是用Windows自己的資源管理器,超大圖標模式,4W文件的狀況所有加載完,8G內存都讓他耗完了,就別提超大數據了,直接GG。咱們這裏的應對措施暫時應用翻頁的處理方式,若是不考慮單頁可承受內存的影響,最合理的應該是1w數據一頁,佔用內存若是用咱們的處理方式,差很少穩定在100M如下
2.四、縮略圖生成優化處理
2.4.一、視頻文件
視頻文件,Windows採用的是取視頻的第10s的幀,不足10s的取最後的幀。這樣的話,若是是電視連續劇的話,會致使該電視劇生成的全部縮略圖都同樣。若是想區分的話,能夠用個人方法,取視頻中間幀。推薦用ff,大視頻文件和小視頻文件取第幾幀的時間大體同樣。
2.4.二、音樂文件與圖片文件
音樂和圖片縮略圖生成和Windows一致。音樂文件的縮略圖藏在文件的頭信息裏面,只有部分mp3格式的文件裏面包含此信息。這個和windows原理一致,先讀取再生成