Я где-то читал, что оператор модуля неэффективен на небольших встроенных устройствах, таких как 8-битные микроконтроллеры, которые не имеют целочисленной инструкции деления. Возможно, кто-то может это подтвердить, но я думал, что разница в 5-10 раз медленнее, чем при операции целочисленного деления.
Есть ли другой способ сделать это, кроме сохранения переменной счетчика и переполнения вручную до 0 в точке мод?
const int FIZZ = 6;
for(int x = 0; x < MAXCOUNT; x++)
{
if(!(x % FIZZ)) print("Fizz\n"); // slow on some systems
}
против
Как я это делаю сейчас:
const int FIZZ = 6;
int fizzcount = 1;
for(int x = 1; x < MAXCOUNT; x++)
{
if(fizzcount >= FIZZ)
{
print("Fizz\n");
fizzcount = 0;
}
}