为什么 mod ( %
) 操作比乘法 ( ) 的成本高出2*
倍多一点?
请更具体地说明 CPU 如何执行除法运算并返回 MOD 运算的结果。
在以下示例中,每个线程运行一秒钟。测试是在SPARC
处理器上进行的。
// multiplication
void someThread() {
int a = 10234;
while (true) {
opers++;
a = a * a;
a++;
}
// opers ~ 26 * 10^6 in a sec.
}
// MOD
void someThread() {
int a = 10234;
while (true) {
opers++;
a = a % 10000007;
a++;
}
// opers ~ 12 * 10^6 in a sec.
}