2011-04-13 86 views
3

提取.zip存檔的最快方法是哪一種?我的應用程序的性能高度依賴於提取.zip文件的速度。我使用的是dotNetzip atm,但似乎可能有更快的工具。如果有,他們安全嗎?我聽說QuickLZ是最快的,但沒有測試過,也沒有找到任何代碼示例或如何在C#中使用它。任何幫助將大大appriciated。提取.zip存檔的最快方式

+4

關於*我的應用程序的性能很大程度上取決於提取.zip文件的速度* - 如果您進一步描述,我們可能會提供一些關於如何優化的建議。你有沒有在DotNetZip中嘗試過「最快的壓縮」級別?如果您可以控制壓縮端,那麼如果您的數據受到某種方式的限制,則可以使用較不常用的壓縮方法,這些方法的解壓縮速度也會更快。 – Cheeso 2011-04-13 17:02:19

+0

太糟糕了,我必須提取已被其他軟件壓縮的文件,所以我不能選擇較低的壓縮級別。 – andree 2011-04-14 06:22:42

+0

在我的應用程序中,主要方法運行花費的時間大約有一半是通過提取.zip壓縮文件來使用的,因此提高提取時間會是一次很好的性能提升。解壓後,我需要訪問這些文件的一些元數據,然後,根據元數據將它們移動到其他位置。 – andree 2011-04-14 06:30:33

回答

1

爲什麼不嘗試SharpZipLib

我自己沒有用過它,所以不知道它是如何與dotNetZip比較的。

但同樣的傢伙產生SharpDevelop,所以我期望它非常好。我使用過去創建的其他庫,並始終對性能和易用性感到滿意。

+0

基於此[鏈接](http://www.eggheadcafe.com/tutorials/aspnet/71485ecc-2d2d-435a-9c35-3d12b279f9ae/a-comparison-of-managed-compression-algorithms.aspx)似乎是sharpziplib是最慢,也是最糟糕的我無法找到任何其他性能測試 – andree 2011-04-13 10:57:01

+0

足夠公平,您是否注意到它只是比較內存中的壓縮和解壓縮字節數組?你可能想要運行你自己的比較,看看它們在實際壓縮和解壓縮適當的zip檔案時的表現如何。 – RobV 2011-04-13 11:03:11

+1

進行了一些簡單的測試 - DotNetZip似乎比SharpZipLib快30-50%,解壓文件大約200-300 MB! – andree 2011-04-13 11:55:35

-1

你的zip文件有多大?也許你可以利用現代多核處理器,將原始文件拆分成多個部分,獨立地壓縮每個部分,然後使用多線程在應用程序中解壓縮它們。與解壓縮時間相比,重新組合內存中文件的時間將會很小。

+0

Zip文件大小爲500 MB到1.5 GB。所以你認爲我應該從原始創建2個zip文件,然後提取它們中的每一個? – andree 2011-04-18 05:45:13

0

使用DotNetZip庫,你可以使用ExtractAll()方法:)

1

如果您的項目升級到.NET 4.5是一個選項,那麼你可以使用ZipArchive類提取所有文件。 I wrote an article使用它,它很簡單。還有ZipFile,其中I also wrote about甚至更​​容易。但是,我無法評論其性能,因爲我沒有使用ZIP歸檔的第三方庫。

+0

博客鏈接已死亡。 – 2016-09-04 21:01:10

+0

我的域名必須移動,但我更新了鏈接。 – 2016-09-05 03:43:34