Почему операция MOD
более дорогая, чем multiplication
более чем на factor of 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.
}