performance - 算法性能与旧方法的比较

标签 performance algorithm comparison

我为某事编写了一种新算法。现在我需要将其与现有方法进行比较,其中一些方法已经有大约 10 年的历史了。

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

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

最佳答案

我不知道您可以选择哪一个,但以下是我能想到的选项列表:

  1. 在您的计算机上与您的计算机并行运行它们的实现。
    这是最好的选择。

  2. 重写其实现并执行 (1)。
    您最好需要将其与他们的测试进行比较,以确保获得大致相似的结果。

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

  4. 从数学角度比较算法。
    这可能很困难,但并非不可能。

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

  6. 出去购买一台与所需测试所使用的规范相似的机器来进行基准测试。
    如果你能找到的话,一台 10 年机龄的机器应该很便宜。另请参阅 (5.b)。

  7. 请联系作者以允许使用任何其他选项。
    论文通常会提供作者的联系方式,或者,如果他们有任何形式的在线存在,并且您能熟练使用 Google,那么您应该能够在其他地方找到他们。

关于performance - 算法性能与旧方法的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17526492/

相关文章:

python - Python 中更快的套接字

mysql - 提高nodejs和MySql的性能

performance - IE11 性能分析器没有给出任何结果

algorithm - 视频图像差异中的边界框

algorithm - 通过一次翻转 k 位来生成最大的 1

c++ - 大输入(64 位)在计算 C++ 中的 64 位整数中的位数时给出意想不到的结果

Java 比较二维数组

c# - 比较 XML 文件是否相等的最佳方法是什么?

jquery - 使用 jQuery 应用 CSS 样式的最有效方法是什么?

ruby-on-rails - Twitter Bootstrap Gems for Rails 的比较