比较两种算法的运行时间

时间:2015-02-02 03:43:01

标签: performance algorithm compare

我只想确认我的解释和计算是否正确。如果我错了,请纠正我。

A算法和B算法的运行时间分别为8.26789秒和814.21416秒。

如果我说通过使用计算A比98快98.98%是否正确:(1-8.26789 / 814.21416)* 100%?

谢谢。

2 个答案:

答案 0 :(得分:1)

由于您希望能够说出A比B快多少,因此最好根据速度来定义。当A比B快2倍时,可以理解A的速度是B速度的两倍。速度与时间成反比。测量算法A和B做同样的工作,我们可以定义速度

  • S A = 1个工作/ 8.26789秒= 0.12095个工作/秒
  • S B = 1个工作/ 814.21416秒= 0.0012282个工作/秒

现在让我们想一下两辆车,一辆以55英里/小时的速度行驶一段距离,而另一辆以50英里/小时的速度行驶,我们会说更快的车是

  • 快10%=((55 mph / 50 mph)-1)x 100%。

将该公式应用于您的算法,

  • ((S A / S B ) - 1)x 100%
  • =((0.12095个作业/秒/ 0.0012282个作业/秒)-1)x 100%
  • =(98.48 - 1)x 100%
  • = 9747%

这两种算法的速度差异很大(差不多是100倍)可能不是比较它们的最佳方法。最好是说A x倍于比B:

  • A比B
  • 快X倍
  • X = S A / S B
  • X = 98.48

算法A比B快98.48 x。

有关数学堆栈交换中有关此主题的讨论,请参阅here

答案 1 :(得分:1)

虽然amdb的答案是正确的,但如果这是一项家庭作业,我怀疑它可能是一个旨在测试你的计算复杂性知识的技巧问题。

基于单次测量,您无法对算法A和B的相对速度进行任何说明。

举一个例子,快速排序算法是O(n log n),如果你要排序很多数字,它是一个比起来更快的算法,它是O(n ^ 2)。但是如果你对每个排序只有3个数字进行基准测试,那么冒泡排序几乎肯定比快速排序更快。针对一组输入的性能不会告诉您算法的比较性能,它只是告诉您算法与特定输入的相对性能,而不是测量计算复杂度的方式。