一些程序(例如 Firefox)最多仅使用所有 CPU 的 25%(仅 1 个线程)。
然而,某些程序(例如 WinRAR)会占用高达 100% 的 CPU。
如何强制 Firefox 使用所有 CPU 容量(像 WinRAR 一样)?
我有 Windows 7 和 Intel Core-i5 CPU(4 线程)。
答案1
有些任务可以从并行性中受益。
例如,如果一个人可以在 9 个月内建造一栋房子,那么(可能)9 个人可以在一个月内建造一栋房子。
但有些任务无法从并行中获益。
例如,一名妇女可以在 9 个月内怀孕并生下一名婴儿,那么让 9 名妇女在一个月内生下一名婴儿就不可能了。
Firefox 本质上是一个输入响应程序。
您输入 URL 或单击链接。Firefox
发出请求以从远程服务器检索网页,然后等待。
网页交付后,Firefox 处理此输入并将其呈现在屏幕上。
然后 Firefox 等待您的下一个输入操作。
Firefox 是一个不会(显著)受益于并行性的程序。
因此,Firefox(显然)是作为单线程程序实现的,仅使用一个核心。
而其他计算密集型且以多线程实现的程序(例如 WinRAR)确实受益于并行性,并且在多个处理器/核心上执行。
答案2
你不能,只有程序开发者可以。
您唯一的选择是,如果您想要 100% 的 CPU 使用率,则打开 4 个程序副本,每个副本都会占用一个核心。
答案3
Windows 中的线程一直运行,直到它们的量(时间片)结束、被阻塞(例如,执行尚未完成的 i/o)或者被中断以运行刚刚准备就绪的更高优先级的程序。
Windows 允许提高线程的优先级,最高可达线程优先级时间关键。但即使是最高优先级的线程偶尔也会被 Windows 调度程序中断,以运行优先级较低的线程,该调度程序使用随机提升避免死锁情况优先级倒置。
应用程序如何或何时创建新线程以及它们做什么是嵌入在程序内部逻辑中的设计决策,而不是您可以控制的东西,除非通过您使用应用程序的方式,例如打开更多选项卡或其他方式。
底线是,如果你想知道需要什么才能尽可能地最大化 CPU 使用率,答案是进行 CPU 密集型活动,使用与处理器相同的线程数,不阻塞 i/o,并且以比其他任务更高的优先级运行(例如,只是作为前台应用程序)。
答案4
火狐浏览器基于在多核 CPU 流行之前编写的软件。因此,它仍然使用具有复杂线程系统的单个进程,不易拆分成单独的程序。你可以投票并参与这电解项目:
该项目的目标是在独立于 Firefox 本身的进程中运行 Web 内容。此模型的两个主要优点是安全性和性能。安全性会提高,因为内容进程可以进行沙盒处理(尽管对内容进程进行沙盒处理是独立于 Electrolysis 的项目)。性能会提高,因为浏览器 UI 不会受到内容代码(无论是布局还是 JavaScript)性能不佳的影响。此外,内容进程可以彼此隔离,这将具有类似的安全性和性能优势。
尽管 Gecko 平台支持多进程,但 Firefox 前端并非设计为使用多进程。使前端(包括插件)支持多进程的工作始于 2013 年初。项目路线图有更多详细信息。
微软 Internet Explorer和谷歌浏览器已经能够使用完整的 CPU 一次处理多个选项卡,而不是乱七八糟地处理线程。通常整个 Firefox 会因为一些琐碎的事情而冻结,例如一个单独的选项卡用 JavaScript 渲染一些雪花。