我正在写有关测试算法的论文。与对照组相比,它多使用了17 kB的内存和少了0.1秒的CPU时间。我很困惑如何比较这两个不同的领域,以断言一个人的效率高于另一个。我知道我在这里比较苹果和橙子,但是有一种客观的方式可以解释为什么一种算法比另一种更好吗?
答案 0 :(得分:1)
一种做到这一点的原则方法是,以“兆字节秒”或类似的方式来查看它,即,运行2秒并占用50 MB的进程将消耗100兆秒。
因此,通过插入总内存使用量和运行时间的before / after值,您可以查看该过程是否在以兆字节秒为单位的时间内不那么密集。如果小于此值,则可以提出一个论点,即在某种意义上(例如,如果您受内存限制并且在云中运行,您基本上需要支付兆秒的时间。
答案 1 :(得分:0)
有没有一种客观的方式可以解释为什么一种算法比另一种更好?
不同的用例和/或具有不同缓存大小/速度的不同硬件可能会倾向于不同的速度/空间权衡。
(使用更多的临时空间增加了缓存的速度,如果否则会导致缓存命中,则会减慢其他代码的速度)。
您可以肯定地说,您可以通过花费一些额外空间来提高实际硬件上的时间性能。。
当前硬件上典型的速度/空间权衡考虑因素 当然会支持您的新算法:17kiB非常小;比现代主流x86 CPU的L1d缓存小。
例如您可以简单地说出,与现代CPU在0.1秒内可以访问的内存量相比,17kiB是一个很小的空间。 (100M纳秒)。不过,那不是一个好主意。