将算法性能与旧方法进行比较

时间:2013-07-08 12:21:42

标签: performance algorithm comparison

我为某事写了一个新算法。现在我需要将它与现有方法进行比较,其中一些方法已有10年了。

我的想法是多年来研究不同处理器的基准测试,以确定我的处理器(i7-920)比2003年的平均处理器快多少。然后我将简单地划分旧方法的执行时间加速因子并使用这些数字与我自己的算法进行比较。

  1. 有这样的事吗?所以我不重做现有的工作。
  2. 可以通过其他方式进行这样的比较吗?
  3. 是否有一些关于此类比较的科学论文可供参考?

4 个答案:

答案 0 :(得分:4)

我不知道哪些是可能的,但这里有一个我能想到的选项列表:

  1. 在你的机器上并排执行他们的实施 这是最好的选择。

  2. 重写他们的实现并做(1) 您最好将其与测试进行比较,以确保得到模糊的结果。

  3. 找到一个实现其算法(或多个库)的库并执行(1) 如果可能的话,我建议使用多个库,因为单个库可能没有有效地实现算法。您可能还想将这些与他们的测试进行比较。

  4. 以数学方式比较算法 这可能很困难,但这并非不可能。

  5. 做你所呈现的。
    (a)我不建议这样做,因为除了影响算法速度的处理器速度之外,您的计算机还有其他决定因素。获得完美平衡这些方程式可能非常困难 (b)线路计算机的顶部和底部之间存在巨大差异,因此使用平均值并不是一个特别好的主意。如果作者没有提供有关此问题的详细信息,我担心您的基准测试不太准确。

  6. 出去买一台类似规格的机器,按照所需测试的标准进行基准测试 一台10年历史的机器应该相当便宜,如果你能找到的话。另请参阅(5.b)。

  7. 联系作者以允许任何其他选项。
    论文通常会提供作者的详细联系方式,或者如果他们有任何在线形式,您应该能够在其他地方找到它们,而且您在使用Google方面也不太合适。

答案 1 :(得分:1)

如果我正在审核你的结果,如果你试图以这种方式表现出不到一个数量级的加速,我会很生气。确定算法性能有很多变量,我怀疑通用基准测试可以捕获正确的算法。我的黄金标准是旧的和新的算法由同一个程序员实现,同样的努力优化,在相同的硬件上运行。在实验算法文献中使用先前作者的实现而不是创建新实现是常见的,但使用不同的硬件则不然。

答案 2 :(得分:0)

算法性能通常以大O项来衡量,为此,最好对基本操作进行计数,例如比较,并针对一系列输入大小进行计算。

如果你必须衡量总时间,至少要消除其他差异来源。 正如@larsmans所说,在同一个处理器上做。

此外,如果有现有的工作,重复它是没有害处的。 一般来说,在科学方面,这是好的事物。

答案 3 :(得分:0)

您应该尝试减少两次运行之间的不同因素的数量。我认为只需在同一台机器上并排运行两个算法和/或比较它们的Big O时间同样有效且重要。您还应该尝试使用更新的库和其他外部函数;使用过时的我也是时间结果的原因。