在运行时通过常数优化模数

时间:2018-06-25 07:43:07

标签: optimization modulo integer-division

编译器通常具有各种方法,可以通过常数将除法和模数优化为其他运算。 hackers delight中对此进行了描述(另请参见this page)。

也有一些讨论,涉及哈希映射以及模指令的速度如何,以及如何最好地将许多大数映射到各种大小的缓冲区中。一个示例是found here

问题是:我们可以在运行时预先计算出这种优化的模运算所需的常量,以便比使用模指令更快地使用它来计算模运算吗?

链接的黑客喜悦文章更着重于除余数,尽管余数当然可以使用rem = n-m * div计算,其中n / m = div + rem / m。

让我为此担心的一件事是,当用编译器完成时,常量是指令中的实际常量,而如果在运行时完成,它们也将是对内存的引用。我不知道是否有可能在运行时生成可执行指令来克服这一问题。

0 个答案:

没有答案