( TCH | 2021. 05. 30., v – 16:19 )

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