【发布时间】:2012-06-27 20:31:57
【问题描述】:
据我了解,目前进行整数除法的方法是在硬件中计算倒数,然后执行乘法。
我有一些 C# 代码,其中大量时间用于整数除法,其值很少更改,以至于可以缓存它们的值。
我想在软件中执行硬件算法,即计算除数的倒数并将所有这些除法转换为乘法。有谁知道执行这种转换的算法,或者更好的是,CLR 中有什么东西可以自动执行吗?
【问题讨论】:
-
你不能用较低级别的语言(比如 C)编写它并与之互操作吗?
-
你是说 CPU 实际上对整数除法进行浮点数学运算?! (例如,x / 4 = x * 0.25)。如果是这样,为什么整数运算通常被认为比浮点运算快得多?
-
@stakx 硬件中的整数除法比浮点除法更复杂。但是,我不能谈论它的具体实现。
-
@NominSim:这显然不是真的,因为浮点除法需要尾数上的整数除法。
-
@OliCharlesworth:如果您查看gmplib.org/~tege/divcnst-pldi94.pdf,您会在第 2 页看到,不仅有几个没有整数除法硬件的架构,而且循环计数(对于确实有它的架构) ) 通常在连续几代中增加。