比较两种算法的运行次
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 个数字的每个排序进行基准测试,冒泡排序几乎肯定会比快速排序快 运行。针对一组输入的性能不会告诉您算法的比较性能,它只是告诉您算法与该特定输入的相对性能,而不是计算复杂性的衡量方式。
我只是想确认一下我的解读和计算是否正确。如有不妥请指正
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 个数字的每个排序进行基准测试,冒泡排序几乎肯定会比快速排序快 运行。针对一组输入的性能不会告诉您算法的比较性能,它只是告诉您算法与该特定输入的相对性能,而不是计算复杂性的衡量方式。