如何比较用不同语言编写的两种不同算法的效率?

时间:2014-01-18 18:34:03

标签: algorithm performance

我知道我们可以通过分析来比较两种算法的时间复杂度。但我知道我想通过真实数据来评估它们。但遗憾的是,它们是用不同的语言编写的。由于不同的语言本身具有不同的效率,是否有可能比较两种算法在不同效率下的效率?

例如,我有两种排序算法。一个用C语言编写,另一个用Java编写。比较它们的运行时间是不公平的,因为C和Java的效率不同。是否可以公平地比较它们?也许是一种统一单位进行手术的方法?

我不想重写任何算法,因为它们都有超过1万行。

2 个答案:

答案 0 :(得分:3)

如果你想测试每个算法的时间复杂度,你可以在不同的数据集大小上运行它们,让我们说:10,100,1000,10K,100K ...... 1M(或B)数据集,测量算法完成的时间。将结果放在图表上会给你答案。

所以如果复杂性是线性的,你会得到一个线性图,如果它是O(n ^ 2),那么图将会非常不同。

现在您已经掌握了每种算法的时间复杂度,因此很容易对它们进行比较,但每种算法都是用不同的语言编写的。

答案 1 :(得分:0)

虽然绝对可以测量哪个设置运行得更快,但仅仅确定运行速度更快的设置算法更有效或更快是不够的。原因是因为编程语言本身。某些语言更快,因为它们更简单。 Java速度较慢,因为它具有许多功能,这使得运行大型数学计算变得不切实际。另一方面,当谈到纯数字运算时,没有什么可以击败Fortran。您会发现,对于大型数据集,Fortran运行速度比Java快,即使算法效率相对较低(这里的关键字是相对的)。