Qt開發 之 Windows資源管理器模仿 並 小超越

一、簡述

最近在作一個相似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原理一致,先讀取再生成

相關文章
相關標籤/搜索