我们有一些用户使用低CPU功率的计算机,在使用我们的Web应用程序时遇到响应时间缓慢的问题。有没有办法让我进行测试,以便我可以模拟较低的CPU速率?
例如,我有2.3 GHz的计算能力,我能将它降至1.6 GHz或更低,以便我能够测试吗?
顺便说一下,我们的客户正在使用Windows。 我必须在Internet Explorer上模拟低计算能力。
我们有一些用户使用低CPU功率的计算机,在使用我们的Web应用程序时遇到响应时间缓慢的问题。有没有办法让我进行测试,以便我可以模拟较低的CPU速率?
例如,我有2.3 GHz的计算能力,我能将它降至1.6 GHz或更低,以便我能够测试吗?
顺便说一下,我们的客户正在使用Windows。 我必须在Internet Explorer上模拟低计算能力。
创建一些虚拟机。
你可以使用免费的VirtualPC或VirtualBox。
除了以上提到的选项之外,另一个轻微的选择是在较低的资源配置下启动Windows。转到开始菜单,选择运行并输入MSCONFIG。您可以转到引导选项卡,单击高级选项并限制内存和进程数。它不像上面那样强大,但它确实为您提供了另一种选择。
高性能和低性能CPU之间的另一个重大区别是可用核心数。这个差异实际上可以达到4倍以上,远远超过您可能遇到的时钟频率差异。
您可以通过设置线程亲和力来解决这个问题。即使是IE6也会使用13个线程来显示google.com。这意味着它将从多核CPU中受益。但是,如果您将线程亲和力设置为仅一个核心,则所有13个IE线程都必须共享该一个核心。
我知道这个问题很老了,但以下是我个人使用的一些收据(不仅针对Web开发):
BES。在使用它时,我会得到一些奇怪的结果。
转到控制面板\所有控制面板项\电源选项\编辑计划设置\更改高级电源设置,然后进入“处理器”部分,并将其最大状态设置为5%(或其他数字)。它只在处理器支持动态倍频变化并且ACPI驱动程序正确安装时才有效。
运行任务管理器,并将处理器亲和力设置为单个核心(或任何您想要的核心数量),用于浏览器(或任何其他)进程。这不是浏览器的最佳实践,因为JavaScript实现通常是单线程的,但就我所看到的,现代浏览器确实使用多个核心。
有几种不同的方法可以实现这个目标。
如果你正在使用VirtualBox,进入要降低CPU速度的虚拟机的设置。转到"系统" > "处理器",然后设置执行上限。百分比控制着速度的降低程度:较低的值相对于常规速度来说更慢。在实践中,我注意到结果可能会不稳定,尽管从技术上讲它是有效的。
也可以设置整个系统的CPU速度。在Windows 10设置应用程序中,转到“系统”>“电源和睡眠”。然后在右侧点击“其他电源选项”。前往更改当前选定计划的计划设置,然后单击“更改高级电源计划设置”。向下滚动到“处理器功率管理”并设置“最大处理器状态”。同样,这是一个百分比。虽然这确实起作用,但我发现在实践中,即使将百分比设置得非常低,它也没有太大的影响。
如果你在处理一个使用DirectX或OpenGL且没有帧率限制的视频游戏,另一种常见方法是在你的图形驱动程序设置中强制开启垂直同步。这通常会将渲染速度降至约60 FPS,这可能足以以合理的速度进行游戏。但是,它仅适用于使用3D硬件渲染的应用程序。
最后:如果您不想使用虚拟机,并且不想更改系统全局设置,而是只想为一个特定进程模拟旧CPU,则我有自己的程序叫做Old CPU Simulator。
操作的主要部分是用C++编写的命令行工具,但也有用C#编写的GUI包装器。GUI需要.NET Framework 4.0。在大多数情况下,默认设置应该是可以的 - 只需在目标速率下选择您想要模拟的CPU,然后点击“New”并浏览要运行的程序。
https://github.com/tomysshadow/OldCPUSimulator(单击右侧的“Releases”选项卡获取二进制文件。)
这个概念是以精确的速率暂停和恢复进程,由于它发生得如此之快,进程将看起来只是在缓慢运行。例如,通过暂停一个进程3毫秒,然后恢复1毫秒,它将看起来以25%的速度运行。通过控制暂停时间与恢复时间的比率,可以模拟不同的速度。这完全与API无关(它不钩住DirectX、OpenGL等,如果需要,它可以与命令行程序一起使用)。
旧CPU模拟器不要求百分比,而是要求模拟的时钟速度(它称之为目标速率)。然后根据您的CPU实际时钟速度自动确定要使用的百分比。虽然时钟速度不是唯一改善计算机性能的因素(还有SSD、更快的GPU、更多的RAM、多线程性能等),但它足以近似地在给定相同目标速率的情况下在不同机器上获得相当一致的结果。它还支持其他可能有助于保持一致性的选项,例如将进程亲和力设置为一个。
它实现了三种不同的挂起和恢复进程的方法,并将使用最佳可用方法:NtSuspendProcess、NtQuerySystemInformation或Toolhelp Snapshots。它还使用timeBeginPeriod和timeEndPeriod来实现高精度定时而无需繁忙循环。请注意,这不是模拟器;二进制文件仍然以本地方式运行。如果您愿意,可以查看源代码以了解其实现方式-这不是一个大型项目。在我的机器上,旧CPU模拟器使用少于1%的CPU和少于1 MB的内存,因此程序本身非常高效(与运行密集程序以有意减慢CPU的情况不同)。