如何在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 编辑过 |
关键字查询
相关文章
正在查询... |