如何降低计算机的速度(出于测试目的)?[关闭]


20

正如大多数人所同意的那样,鼓励开发人员通过给他们慢速的机器来编写快速的代码不是一个好主意。但是这个问题有一点。我的开发机器速度很快,因此我偶尔会写出效率低下的代码,但是只有在其他人的机器上运行它时,这些代码才变得显而易见。

有什么好的方法可以暂时降低涡轮增压的开发机器的速度?“速度”的概念包括几个因素,例如:

  • CPU时钟频率。
  • CPU核心数量。
  • 内存和处理器缓存的数量。
  • 各种公交车的速度。
  • 磁盘I / O。
  • GPU。
  • 等等

34
取消按下“涡轮按钮” ...不,请等待。
LennyProgrammers

6
这是您问题的根源:“效率低下”。改变你的习惯编码
Darknight

16
@黑夜:不是,不是那样的。您必须首先将其正确设置,然后 在需要时将其快速设置。要知道要优化什么,您必须进行测试并找出问题所在。首先,尽可能快地进行操作会浪费您的时间,也可能会浪费正确的时间
Joonas Pulakka 2010年

1
好吧,我部分同意。但是,如果您有一个有效的编码习惯,可以从这里开始;那么当您“使其正常运行”时,您可以在以后花费更少的时间“使其更快”。
2010年

4
@Darknight:我认为@Joonas在问一个非常明智的问题。仅“改变编码习惯”就足够了,这是不现实的。这是一个示例:(stackoverflow.com/questions/926266/…)而且,您可以在没有IDE的情况下将其放在速度较慢的计算机上计时的想法认为,这足以发现性能错误。很多人都在谈论概要分析,但是(成功地)进行概要分析是另一回事。乔纳斯所要求的是对我(及我认为的其他人)真正的帮助。
Mike Dunlavey

Answers:


39

在内存有限且只有一个内核的虚拟机中运行测试。

人们现在可能仍然拥有的旧机器大多是奔腾4时代的东西。那不是那么不现实-我现在正在自己使用一个。通常,当前许多PC上的单核性能并没有那么好,而且可能会更差。无论如何,RAM性能比CPU性能更重要,并且通过比旧1GB P4严格得多的限制,您可以对此进行补偿。

否则,如果您愿意花一点钱,请购买一台上网本。在上面运行测试。


1
或一台老年笔记本电脑。

虚拟机的问题在于它们中的任何一个(AFAIK)都不支持IEEE 1394(火线)端口。我的某些软件使用与火线相连的摄像机,因此...
Joonas Pulakka 2010年

真正的设备可以让您将任何PCI设备分配给VM
Javier 2010年

3
对于Xen来说可能是一项工作-虚拟机没有主机O / S,但它本身就是顶层。具有丰富的Unix历史,但是现在可以支持专有的OS。但是我从未使用过它,也不知道您可以对特定VM的性能和资源进行多少控制。
2010年

1
+1虚拟机具有高度可调性,可以准确地提供您要进行测试的环境。为此,我自己使用VMWare。
加里·罗

11

发现明显的算法效率低下的方法是对代码进行概要分析。捕获内存过度使用的方法是首先了解目标使用的内存量,然后进行相应的设计,并在该环境中进行定期测试。

如果您正在编写线程代码,则在多台具有不同CPU速度的计算机上进行测试将有助于突出显示与线程处理相关的特定时序错误,但是必须对线程逻辑进行积极的单元测试。


1
不,分析不会发现算法效率低下。如果需要加速,它将向您显示该程序在哪里花费时间,但是如果需要加速,则不会。
David Thornley,2010年

我想我在这里没有区别。如果您的意思是分析不会告诉您如果您不是次优的,只是您花费CPU周期的地方,那么我同意。做出判断需要经验。
迈克尔·肖

4
@大卫索恩利和@Ptolemy:我认为算法效率低下或代码热点是次要的核心问题:“是不是缓慢或不呢?” 这是主观的,但这也是最重要的问题。如果在实践中感觉并不慢,那么如果您的算法效率低下怎么办?它做了它需要做的!或者,如果无论高度优化的算法如何,程序都感觉太慢,那么您可能必须完全更改方法(体系结构?编程语言?某些东西!)。拥有最佳算法并不是程序缓慢的借口:-)
Joonas Pulakka 2010年

1
要揭示算法效率低下,请使用渐进大小的数据集进行测试。
rwong 2010年

10

您为降低计算机速度所做的任何事情都可能是黑客。

这里有一些建议:

  • 使用虚拟机
  • 在您的计算机上分析代码,寻找瓶颈
  • 使用旧机器进行“性能测试”

@matt是什么意思?
约翰尼2010年

1
@johnny:我的意思是说我投票赞成,因为Jason建议对应用程序进行性能分析,这有望找到性能瓶颈的根源,而无需使用速度较慢的系统。
马特·艾伦


4

意识到这是一个很老的问题,但是对于这种情况下的其他任何人来说;您可以尝试使用CPUKiller。基本上,它是一个小型应用程序,您可以配置为使用不同百分比的处理器。http://www.cpukiller.com/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.