TL; DR:否.恒定长度整数数学运算(禁止除法,非线性)消耗恒定数量的周期,无论操作数的数值如何.
mulq
需要两个QWORD参数.
这些值以little-endian二进制格式(由x86架构使用)表示如下:
1011000000000000000000000000000000000000000000000000000000000000 = 13
1000110001111010000100110000000000000000000000000000000000000000 = 13131313
Run Code Online (Sandbox Code Playgroud)
处理器将这两者视为相同的"大小",因为它们都是64位值.
因此,无论操作数的实际数值如何,循环计数应始终相同.
更多信息:
有概念领先零期待和领先零检测[ 1 ] [ 2 ]可使用的,以加快浮点运算(LZA/LZD).
然而,据我所知,没有主流处理器采用这些方法中的任何一种来进行整数运算.这很可能是由于大多数整数运算的简单性(在这种情况下是乘法).LZA/LZD的开销可能根本不值得,因为简单的整数数学电路可以在更短的时间内完成全部乘法.
我没有任何参考资料,但我会把钱花在延迟/吞吐量上,因为延迟/吞吐量不随操作数的值而变化。否则,安排起来将是一场噩梦。
归档时间: |
|
查看次数: |
724 次 |
最近记录: |