我可以使用哪些工具来确定应用程序的硬件要求?

对于普通读者:传奇™继续…

我的应用在我的开发机器上运行良好 – 这是5年前购买的一款相当不错的游戏装备。 因此,这是64位,具有2.2GHz的时钟速度和2GB的内存。

但是,工作的机器是标准的戴尔问题办公室电脑,甚至很难启动我的应用程序,更不用说运行它了。

解释…我可以想象,人们对我尖叫:“你究竟在做什么来要求这样的规范?”那么,我正在做大量的实时图像分析和audio生成。

我们的团队有预算购买专用笔记本电脑(需要便携式)来运行它。 所以现在我已经负责生成一个最低要求的规格。

我可以使用哪些工具来确定能够舒适地运行我的应用程序的最低规格?

更新:到目前为止,答案虽然有用,但更侧重于分析的替代scheme。 所以我已经提出了一个赏金,看是否有任何软件会做这种事情。

你有访问一个好的分析器? 我认为理解应用程序中的性能瓶颈是值得的。 如果事实证明你的应用程序是CPU绑定的,那么显然你会考虑在高端处理器上挥霍。 应用程序是多线程的吗? 如果是这样,你的应用程序是利用多个处理器还是因为同步而被序列化?

如果应用程序是IO绑定的,也许应该考虑获取SSD驱动器。

也许应用程序花费太多时间寻呼? 等等…

如果您有权访问Visual Studio 2010 Ultimate,则建议检出并发事件探查器 。 这将帮助您可视化程序中正在发生的事情,并确定性能瓶颈。 它会告诉你你的应用程序在哪里花费时间:等待IO,内存管理等。 虽然这个工具肯定不会告诉你最低硬件要求是什么,它应该给你一个很好的想法,硬件改进将有助于你的应用表现更好。 如果你没有VS2010,你可以用任何好的分析器进行类似的分析。 关于并发可视化器的一件很酷的事情是,它关注于暴露并发和多线程性能问题。

没有什么比现实世界的测试…

尝试在各种硬件上运行您的应用程序,并根据您对可接受性能的了解来提出建议的最低要求。

注意:绝对最低硬件要求和建议的最低可接受要求(听起来像是你真正的要求)之间经常有很大的差异。

一种选择是创建一系列具有不同系统配置的虚拟机,并在每个虚拟机中尝试您的应用程序(您将需要在高性能计算机上执行此操作)。 这样,您可以调整虚拟机的内存数量,CPU类型等,并模拟在各种系统上测试软件。 在测试过程中,您可以使用Windows任务管理器来查看您的应用程序正在使用多少主机CPU和内存。 为了一个舒适的体验,你会希望你的应用程序尽可能地适合物理内存(加上约1-1.5 GB的操作系统和其他后台服务)。

另请注意,您的应用程序是否具有需要硬件支持的任何功能(DirectX 11,CUDA等),并确保将其包含在您的硬件要求中。

从简短的信息,这听起来不像你的电脑是一个特别高的规格。 你看到的戴尔机器有什么规格运行缓慢?

如果“工作”机器只是坏软件版本(猜测标准XP磁盘控制器驱动程序等),我会尝试另一台PC。

我通常不会推荐使用虚拟机路由,因为这对于限制内存使用情况非常有用。 但是,如果你需要检查其他的操作系统/服务包,那么虚拟机是一个很好的选择。

最后,你说应用程序加载缓慢,它是在负载上做什么? 查看性能监视器以查看其是否受到磁盘,内存或CPU的约束可能是一个想法。 使用Google找到有用的计数器来监视每个计数器。

原谅我说明明显但是:

使用您的软件检查软件的硬件要求。

我不太明白为什么你的开发机器的规格不是你打算购买的笔记本电脑所需的规格。 但是,如果出于某种原因,这还不够好,请在其他规格的硬件上运行软件。 例如,你可以从你的开发机器中拿出1GB的内存来看看事情进展情况如何。

有大量的基准软件可用于各种任务。 例如,LINPACK被用于基准测试超级计算机。 所有这些现成的基准和一般方法中的缺陷在于,它们只能为您提供关于计算机如何运行基准的良好信息。 将基准测试结果转化为软件对硬件性能的预测,不仅仅是一门科学,更是一门艺术。 在超级计算机世界组织在购买前在新的平台上将自己的关键应用程序进行基准测试