限制用于分析的CPU速度
我正在尝试优化应在多种CPU和体系结构(其中一些非常接近嵌入式设备)上运行的应用程序上的几个瓶颈。
但是,由于CPU的速度,我的探查器的结果并不是很重要。是否有任何方法(最好是在Windows或者Mac OS X下)限制用于分析的CPU的速度?
我曾考虑过使用虚拟机,但还没有发现任何具有这种功能的东西。
解决方案
回答
最近在Downloadsquad.com上有一个应用程序。我不记得它的名字了,但是它确实起到了一些有趣的作用。可能只管理什么CPU上的应用程序,但这也许可以帮到我们。我将在今天下午尝试寻找它,如果找到它,请回复。
回答
这很好用,并支持多核。 http://www.cpukiller.com/
回答
许多探查器(例如oprofile但仅适用于linux)可让我们设置其收集数据的频率。查看事件探查器是否支持此功能,如果不行,请尝试使用另一种方法。
回答
恐怕除了开始在我们所在地区四处寻找旧硬件以外,我什么都不知道。 CPU不是唯一可以(通常)影响事物的变量。 L1 / L2高速缓存大小,内存总线速度,内存速度/延迟,硬盘驱动器速度等都是许多应用程序中的重要因素。
回答
一个普遍的误解是,我们需要知道代码有多快才能知道性能问题在哪里。这使问题发现与问题衡量相混淆。
这是我使用的方法。
如果程序中有一些浪费的逻辑,那么无论运行什么CPU,它都是浪费的。
我们需要知道的是它在哪里。对于测量,我们不需要知道它有多大。我们只需要知道它足够大就可以修复。
通常存在许多大小不同的问题。我们可能会首先找到最大的那些,但是无论以什么顺序修复它们,修复的每个问题都将使查找剩余的那些更加容易,因为它们所占的比例更大。
回答
I've thought about using a virtual machine, but haven't found any with such functionality.
为什么需要一个显式提供该功能的VM?只需限制主机操作系统中VM的CPU使用率(这只是一个常规过程)。那应该具有完全相同的效果。
我们可以例如在Linux上使用cpulimit对于MS Windows也存在类似的解决方案。