【发布时间】:2019-12-01 17:11:29
【问题描述】:
我正在写一篇关于我测试过的算法的论文。与对照组相比,它使用了 17 kB 的内存和 0.1 秒的 CPU 时间。我对如何比较这两个不同的领域以做出有利于一个人的效率高于另一个人的断言感到困惑。我知道我在这里比较的是苹果和橙子,但是有没有一种客观的方式可以解释为什么一种算法会比另一种更好?
【问题讨论】:
标签: performance memory cpu benchmarking ram
我正在写一篇关于我测试过的算法的论文。与对照组相比,它使用了 17 kB 的内存和 0.1 秒的 CPU 时间。我对如何比较这两个不同的领域以做出有利于一个人的效率高于另一个人的断言感到困惑。我知道我在这里比较的是苹果和橙子,但是有没有一种客观的方式可以解释为什么一种算法会比另一种更好?
【问题讨论】:
标签: performance memory cpu benchmarking ram
一种原则性的做法是用“兆字节秒”或类似的方式来看待它,即运行 2 秒并占用 50 MB 的进程消耗 100 兆字节秒。
因此,通过为您的总内存使用量和运行时间插入之前/之后的值,您可以查看进程是否以兆字节秒为单位减少了密集度。如果它较少,您可以提出论点,即除了 更快 它在内存使用方面较少密集,在某种意义上(例如,如果您受内存限制并且在云端运行,基本上是按兆秒付费)。
【讨论】:
有没有一种客观的方式可以解释为什么一种算法会比另一种更好?
不同的用例和/或具有不同缓存大小/速度的不同硬件可能有利于不同的速度/空间折衷。
(使用更多的暂存空间会弄脏更多的缓存,如果缓存命中会降低其他代码的速度)。
您当然可以说您在实际硬件上提高了时间性能,但需要花费一些额外空间。
典型的速度/空间权衡考虑当前硬件肯定有利于您的新算法:17kiB 非常小;比现代主流 x86 CPU 中的 L1d 缓存更小。
例如您可以简单地说,与现代 CPU 在 0.1 秒内可以访问多少内存相比,17kiB 是一个很小的空间。 (100M 纳秒)。不过,这不是一个很好的论点。
【讨论】: