java函数中的模运算符如何?

时间:2013-04-02 00:47:16

标签: java function modulus machine-code

我即将开始对大量代码进行优化,我需要确切知道在使用模数运算符时执行了哪些操作。我已经搜索了很长一段时间,但我无法找到有关它背后的机器代码的任何信息。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

整数上的模运算符是在大多数平台上构建的。执行具有与除法相当的时序的指令,产生模数。

编译器可以对权力为2的除数执行优化:编译器可以使用更快的x % 512而不是执行x & 0x01FF的模数。

答案 1 :(得分:1)

如果你需要知道

  

使用模数运算符时执行哪些操作

然后我会建议你“做错了”。

根据操作系统和底层架构,模数可能会有所不同。它可能会有所不同,也可能没有,但如果您需要依赖实施,您的时间可能最好花在其他地方。不保证实现保持不变,或在不同的机器上保持一致。

为什么你认为模数是计算的主要来源?无论其实现如何,操作很可能是一个常数 - 即,如果它在大于常数时间的大O的算法中运行,则首先优化算法。

问问自己为什么需要优化。计算是否(显着)长于预期?

然后问问自己90-99%的计算花费在哪里。尝试使用分析器来获取数字,即使您认为自己知道时间花在哪里。它可能会给你一个线索或揭示一个错误。

答案 2 :(得分:0)

  

有什么想法吗?

是的,不要浪费你的时间。除了试图通过自己的工作击败编译器之外,还有其他一些代码可以改进