【发布时间】:2015-03-14 16:42:41
【问题描述】:
从“Programming Pearls”一书中转述(关于旧机器上的 c 语言,因为这本书是 90 年代后期的):
整数算术运算(+、-、*)可能需要大约 10 纳秒,而 % 运算符最多需要 100 纳秒。
- 为什么会有这么大的区别?
- 模数运算符在内部是如何工作的?
- 在时间上和除法(
/)一样吗?
【问题讨论】:
-
作为一个练习,写出最简单的版本,比如除法,然后是模数。计算优化之前需要的每个指令。显然会有更高效的方法来做到这一点(甚至在您进行 CPU 级别优化之前),但它会让您了解其中的区别。
-
我很惊讶除法据报道与 *,-,+ 大致相同。即使在新的处理器上,划分也慢很多倍。
-
什么语言?除数是什么?您将模数称为 in-int 或 double 或 float 的类型是什么?
-
@AlexBrown ..Language:C,通过模数运算符,我的意思是“%”操作符。例如:23413%34
-
啊哈!重新格式化您的问题,以便我可以用这些术语来理解它。
标签: modulo integer-division cpu-speed programming-pearls