Har*_*rry 4 c++ java performance coding-style
假设您需要跟踪调用方法的次数,并在调用n次时打印某些内容.什么是最有效的:
使用long变量_counter并在每次调用方法时增加它.每次调用你测试的等式"_counter%n == 0"
使用int变量_counter并在每次调用方法时增加它.当_counter = n时,打印消息并将变量_counter重置为0.
有人会说差异可以忽略不计,你可能是对的.我只是好奇最常用的方法
在这种特殊情况下,由于你需要一个if语句ANYWAY,我会说你应该在达到计数时将它设置为零.
但是,对于每次都使用该值的情况,并且只想在"达到某个值时将其回绕到零",则情况不太明显.
如果您可以调整n为2(2,4,8,16,32 ......)的幂,那么您可以使用counter % n与counter & (n-1)- 相同的技巧- 这使得操作非常快.
如果n不是2的幂,那么很可能你最终做了一个真正的鸿沟,这是一个坏主意 - 与常规指令相比,鸿沟非常昂贵,并且比较和重置很可能比除法选项更快.
当然,正如其他人所提到的,如果你的计数器达到了类型的最大限制,你可能会得到各种有趣的游戏.
编辑:当然,如果你正在打印一些东西,这可能比划分的时间长100倍,所以它实际上是微优化,除非n是非常大.