gpt4 book ai didi

c# - 如何在 c# 中优化或限制 zip 进程 (DotNetZip) 的 CPU 使用率?

转载 作者:太空狗 更新时间:2023-10-29 22:17:20 24 4
gpt4 key购买 nike

大家好

我有一个应用程序,用于使用 DotNetZip 库存档文件夹。我注意到,当它进入实际的“压缩”过程时,它会占用 100% 的 CPU。这个应用程序将与另一个应用程序(一个 TCP 聊天应用程序)结合使用,所以我真的需要它来尽可能少地使用 CPU。

有什么方法可以安全地限制 cpu 吗?我试过降低优先级,但没有什么区别。我现在唯一能做的就是将亲和性设置为仅 1 个核心,以便它使用 50%。但当然这只适用于多核计算机。

最佳答案

默认情况下,DotNetZip 将在多个线程上运行,以提供更快的压缩速度,但会占用 CPU 和内存。在多核系统上,如果有足够的 I/O 吞吐量,这可能会占用所有 CPU 的 100%。

如果您不想这样,您可以将 ZipFile.ParallelDeflateThreshold 设置为 -1。这表示“永远不要使用多线程来压缩”。这仍然会消耗单个线程可以获得的所有 cpu;在单核、单 cpu 机器上,它仍然是 100%。当前发行的典型笔记本电脑是双核机器;在这种情况下,它将显示 50% 的 CPU 使用率,因为一个核心将完全饱和。

如果您在多核机器上运行,并且您希望您的 tcp 通信应用程序继续畅通无阻,您可以在后台线程中启动 DotNetZip 工作,并设置我上面提到的属性。为了进一步隔离,除了设置并行阈值属性外,您还可以将 DotNetZip 分解为一个单独的进程,并在该进程上设置亲和性 + 优先级。

关于c# - 如何在 c# 中优化或限制 zip 进程 (DotNetZip) 的 CPU 使用率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5827393/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com