Látom. Mondjuk ennek a fele azért van, mert összeadást használtam a végén, nem vagy-ot, így feleslegesen 16-biten elvégezve az összefésülést. Ha nem + (y & 7)
van a végén, hanem | (y & 7)
, akkor nem 1001 ticks vs 1021, csak 1001 vs 1013. Valószínűleg ugyanez okozza a másik felét is, a (rowX8 << 2) + rowX8
az 16 bit + 8 bit, míg a idx += (idx << 2)
az 16 + 16 bit. Vagyis a y = (4 * x + x) * 8;
jobb lebontás, mint a y = (8 * x); y += (y * 4);
, ha x
8-bites, még akkor is, ha ugyanúgy 5 shiftelés és egy összeadás van benne.
Mi baja a printf()
-nek?
Volt a CoV-ban C rovat, szidták is, mint a bokrot. :P