Думал, что прямые битовые операции выполняются быстрее чем стандартные, только вот почему это: Код (Text): bitWrite(mR, i, !(bitRead(masRG[s][i], 0))); оказалось быстрее чем вот это: Код (Text): setbit (mR, i, !(getbit(masRG[s][i], 0))); при: Код (Text): void setbit(byte &src, byte index, bool val) { if (val) src |= (1 << index); else src &= ~(1 << index); } bool getbit(byte src, byte index) { return src &= (1 << index); } Разница 10-12%. Самодельные функции не оптимизированы?
Какая погрешность? Один и тот же скетч гоняется несколько секунд в одном варианте и во втором, в первом получается 2310 кадров, во втором 2023 сколько ни гоняй.
Такой вариант дал нечто среднее: Код (Text): mR = writeByte (mR, i, !(getByte(masRG[s][i], 0))); при: Код (Text): bool getByte (byte by, byte pos) { return by &= (1 << pos); } byte setByte (byte by, byte pos) { return by |= (1 << pos); } byte clearByte (byte by, byte pos) { return by &= ~(1 << pos); } byte writeByte (byte by, byte pos, bool bi) { if (bi) { return setByte(by, pos); } else { return clearByte(by, pos); } } Я то думал, что уже некуда короче. )