【发布时间】:2011-12-04 19:41:12
【问题描述】:
我最近阅读了很多关于编程实践、设计等方面的文章,并对将乘法实现为位移的真正性能提升感到好奇。
我正在阅读的示例是鼓励将 x*320 实现为 (x
这在现代编译器中的相关性如何?如果有显着的性能提升,编译器能否根据需要自动将这些“简单乘法”转换为位移位?
有没有人不得不在他们的项目中以这种方式使用位移来实现更快的乘法?您可以期待哪些性能提升?
【问题讨论】:
-
既然你问的是“你能期待什么样的性能提升?”,讨论这种事情真的会误导你,因为任何类型的微优化只在你可以编译的紧密的 CPU 循环,实际上有很多用处。这只是一个非常特殊的代码类别。人们编译的大多数应用程序几乎将所有时间都花在系统库、I/O、数据库访问等方面。它们可以被优化,但只能通过消除大部分时间在堆栈上的函数调用。编译器无法为您做到这一点。
标签: performance bit-manipulation bit-shift multiplication