Является ли операция MOD более интенсивной для ЦП, чем умножение?

Почему операция 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.
}
14
задан Leonid 5 November 2010 в 19:35
поделиться