如何在C#中優化或限制zip進程(DotNetZip)的CPU使用率?
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
:如何在C#中優化或限制zip進程(DotNetZip)的CPU使用率? 我有一個應用程序,用于使用DotNetZip庫來存檔文件夾。 我注意到,在進行實際的"壓縮"過程時,它會占用100%的CPU。 該應用程序將與另一個(TCP聊天應用程序)結合使用,因此我真的需要此應用程序,以使其使用的CPU盡可能少。 有什么辦法可以安全地限制CPU? 我嘗試降低優先級,但沒有任何區別。 我現在唯一擁有的就是將親和力僅設置為1個核心,以使其使用50%。 但是,當然,這僅適用于多核計算機。
默認情況下,DotNetZip將在多個線程上運行,以提供更快的壓縮速度,但會占用CPU和內存利用率。在足夠多的I / O吞吐量下,在多核系統上,這可能會消耗所有CPU的100%。 如果不希望這樣,可以將ZipFile.ParallelDeflateThreshold設置為-1。這表示"切勿使用多個線程進行壓縮"。這仍然會消耗單個線程可以獲取的所有cpu。在單核,單CPU的計算機上,該比例仍為100%。典型的當前筆記本電腦是雙核計算機。在這種情況下,它將顯示50%的CPU使用率,因為一個內核將完全飽和。 using (ZipFile zip = new ZipFile(tmpRarFileName, Encoding.Default)) { zip.ParallelDeflateThreshold = -1; zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression; //設置壓縮率 zip.AddFile(tmpBakFileName); zip.Save(); } 如果您在多核計算機上運行,并且希望tcp通信應用程序繼續暢通無阻,則可以在后臺線程中啟動DotNetZip工作,并設置我上面提到的屬性。為了進一步隔離,您可以將DotNetZip分解為一個單獨的進程,并在該進程中設置親和力+優先級,以及設置并行閾值屬性。 該文章在 2024/1/19 22:47:39 編輯過 |
關鍵字查詢
相關文章
正在查詢... |