我正在尝试优化分区和模块化操作,以提高C语言中代码的整体性能。
我有
UINT32 quo = num / 520 ;
UINT32 rem = num % 520 ;
大多数博客都提到了优化2个操作的强大功能,比如
num % (2^i) = num & (2^i -1 ).
我的代码中的num将是一个相当大的数字。
请为上述代码建议替代方法。
答案 0 :(得分:1)
正如Oliver在评论中已经提到的,编译器应该自动优化除法和模运算。但是,如果您想了解更多关于常数除数除法的优化(比如示例中的520
),您可能会发现此链接http://ridiculousfish.com/blog/posts/labor-of-division-episode-iii.html很有帮助。
诀窍是找到一个合适的因子,以便可以用乘法 - 位移操作代替除法运算。
答案 1 :(得分:1)