我即将开始对大量代码进行优化,并且我需要确切知道在使用模运算符时执行了哪些操作。我已经搜索了很长一段时间,但我找不到任何关于它背后的机器代码的信息。有任何想法吗?
问问题
4838 次
3 回答
1
如果你需要知道
当使用模运算符时,究竟执行了哪些操作
那么我建议你“做错了”。
模数可能因操作系统和底层架构而异。它可能会有所不同,也可能不会,但如果您需要依赖实施,您的时间可能最好花在其他地方。不保证实现保持不变,或在不同机器之间保持一致。
为什么你认为模数是计算的主要来源?无论其实现如何,该操作很可能是一个常数——即,如果它在一个大 O 大于常数时间的算法中运行,则首先优化该算法。
问问自己为什么需要优化。计算时间是否(显着)长于预期?
然后问问自己 90 - 99% 的计算都花在了哪里。尝试使用分析器获取数字,即使您认为自己知道时间花在了哪里。它可能会为您提供线索或阐明错误。
于 2013-04-02T01:50:06.500 回答
1
大多数平台都内置了整数模运算符。执行具有与除法相当的时序的指令,产生模数。
编译器可以对除数进行优化,它是 2 的幂:x % 512
编译器可以使用可能更快的x & 0x01FF
.
于 2013-04-02T00:49:31.880 回答
0
有任何想法吗?
是的,不要在这上面浪费时间。除了试图在自己的工作中击败编译器之外,还有其他一些代码可以改进得更多
于 2014-06-19T14:54:17.883 回答