Почему операция mod (%
) дороже операции умножения (*
) чуть более чем в множитель 2?
Уточните, пожалуйста, как ЦП выполняет операцию деления и возвращает результат для операции 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.
}
+
? ^^ - person   schedule 05.11.2010a
. При компиляции с оптимизацией ни один из циклов не работает. Если без оптимизации, то это не очень значимый бенчмарк. - person Peter Cordes   schedule 04.02.2021