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