几天前,在 Facebook 的演讲中——幻灯片、视频,Andrei Alexandrescu 谈到了可能证明我们错了的常见直觉。对我来说,幻灯片 7 上出现了一个非常有趣的观点,他指出“更少的指令 = 更快的代码”的假设是不正确的,更多的指令不一定意味着更慢的代码。
我的问题来了:他的演讲(大约 6 分 20 秒)的音频质量不太好,我不太理解解释,但据我所知,他正在将退休指令与算法的最优性进行比较一个性能水平。
但是,据我了解,这是无法做到的,因为这是两个独立的结构级别。指令(尤其是实际停用的指令)是一项非常重要的衡量标准,基本上,它可以让您了解实现目标的性能。如果我们忽略一条指令的延迟,我们可以概括出更少的退役指令 = 更快的代码。当然,在某些情况下,即使在循环内执行复杂计算的算法也会产生更好的性能,因为它会更早地中断循环(想想图遍历)。但是,在复杂性级别上与算法进行比较,而不是说这个循环有更多指令并且比另一个更好,难道不是更有用吗?从我的角度来看,
有人可以帮助我了解他的示例将走向何方,以及如何(显着)更多退休指令导致更好的性能?