【发布时间】:2010-09-08 11:04:22
【问题描述】:
我正在尝试优化一个应用程序的几个瓶颈,该应用程序应该在非常广泛的 CPU 和架构(其中一些非常接近嵌入式设备)上运行。
但是,由于我的 CPU 速度,我的分析器的结果并不是很重要。是否有任何方法(最好在 Windows 或 Mac OS X 下)限制我的 CPU 速度以进行分析?
我曾考虑过使用虚拟机,但没有找到具有此类功能的虚拟机。
【问题讨论】:
我正在尝试优化一个应用程序的几个瓶颈,该应用程序应该在非常广泛的 CPU 和架构(其中一些非常接近嵌入式设备)上运行。
但是,由于我的 CPU 速度,我的分析器的结果并不是很重要。是否有任何方法(最好在 Windows 或 Mac OS X 下)限制我的 CPU 速度以进行分析?
我曾考虑过使用虚拟机,但没有找到具有此类功能的虚拟机。
【问题讨论】:
这很好用并且支持多核。 http://www.cpukiller.com/
【讨论】:
一个常见的误解是,您需要知道代码的运行速度才能知道性能问题出在哪里。这将问题发现与问题衡量混淆了。
如果程序中有一些浪费的逻辑,不管用什么CPU运行都是浪费的。
您需要知道的是它在哪里。对于测量,您不需要知道它有多大;你只需要知道它大到需要修复即可。
通常会有许多不同大小的问题。您可能会首先找到最大的那些,但无论您以什么顺序修复它们,您修复的每个都会更容易找到剩余的,因为它们会占更大的百分比。
【讨论】:
恐怕除了开始在您所在地区四处寻找旧硬件之外,我不知道任何答案。 CPU 并不是唯一可以(通常)影响事物的变量。 L1/L2 缓存大小、内存总线速度、内存速度/延迟、硬盘速度等都是许多应用程序中的重要因素。
【讨论】:
最近在 Downloadsquad.com 上有一个应用程序。我不记得它的名字,但它做了一些有趣的僵硬的处理器和任务管理器。它可能只是管理什么应用程序在什么 cpu 上,但也许它会给你这个。今天下午我会尝试寻找它,如果找到它会回复。
【讨论】:
许多分析器(例如 oprofile - 但仅限于 linux)允许您设置它们收集数据的频率。看看您的分析器是否支持这一点,如果不支持,请尝试其他支持。
【讨论】:
我考虑过使用虚拟 机器,但还没有找到 这样的功能。
为什么需要明确提供该功能的虚拟机?只需限制主机操作系统中虚拟机的 CPU 使用率(它只是一个常规进程)。那应该有完全相同的效果。
您可以这样做,例如在 Linux 上使用cpulimit; MS Windows 也有类似的解决方案。
【讨论】: