我即将开始对大量代码进行优化,我需要确切知道在使用模数运算符时执行了哪些操作。我已经搜索了很长一段时间,但我无法找到有关它背后的机器代码的任何信息。有什么想法吗?
答案 0 :(得分:1)
整数上的模运算符是在大多数平台上构建的。执行具有与除法相当的时序的指令,产生模数。
编译器可以对权力为2的除数执行优化:编译器可以使用更快的x % 512
而不是执行x & 0x01FF
的模数。
答案 1 :(得分:1)
如果你需要知道
使用模数运算符时执行哪些操作
然后我会建议你“做错了”。
根据操作系统和底层架构,模数可能会有所不同。它可能会有所不同,也可能没有,但如果您需要依赖实施,您的时间可能最好花在其他地方。不保证实现保持不变,或在不同的机器上保持一致。
为什么你认为模数是计算的主要来源?无论其实现如何,操作很可能是一个常数 - 即,如果它在大于常数时间的大O的算法中运行,则首先优化算法。
问问自己为什么需要优化。计算是否(显着)长于预期?
然后问问自己90-99%的计算花费在哪里。尝试使用分析器来获取数字,即使您认为自己知道时间花在哪里。它可能会给你一个线索或揭示一个错误。
答案 2 :(得分:0)
有什么想法吗?
是的,不要浪费你的时间。除了试图通过自己的工作击败编译器之外,还有其他一些代码可以改进