比较两种算法的运行次

compare the running times of two algorithms

我只是想确认一下我的解读和计算是否正确。如有不妥请指正

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

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

谢谢。

既然您想知道 A 比 B 快多少,那么最好用速度来定义它。当 A 比 B 快 2 倍时,可以理解为 A 的速度是 B 的速度的两倍。速度与时间成反比。算法 A 和 B 是在做同样的工作时测量的,我们可以定义速度

  • SA = 1 个作业/8.26789 秒 = 0.12095 jobs/sec
  • SB = 1 个作业/814.21416 秒 = 0.0012282 个作业/秒

现在让我们考虑两辆车,一辆以 55 miles/hour 行驶一段距离,而另一辆以 50 miles/hour 行驶一段距离,我们会说速度更快的车是

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

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

  • ((SA / SB)-1) x 100%
  • = ((0.12095 jobs/sec / 0.0012282 jobs/sec)-1) x 100%
  • = (98.48 - 1) x 100%
  • = 9747 %

这两种算法的速度差异如此之大(几乎相差 100 倍),快 % 可能不是比较它们的最佳方式。最好说 A 比 B 快 x 倍:

  • A 比 B 快 X 倍
  • X = SA / SB
  • X = 98.48

算法 A 比 B 快 98.48 倍。

有关 Mathematics Stack Exchange 中有关此主题的讨论,请参阅 here

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

您无法根据单次测量来判断算法 A 和 B 的相对速度。

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