Белый Антон, 2538

60 FPS have been achieved through various optimizations and taking advantage of automaton's cyclicity.

The latter is done by caching several rendered iterations until they loop (1) and then displaying them continuously (2). This, however, introduces bigger heap consumption (approx. 5 Mb now) and, on devices with low minimum heap size, it introduces notable lags during phase (1) due to dynamic heap reallocation.
So if this is not acceptable, one can revert commits 93037cd..b5c0dfc and use non-caching version from 62199db, which is able to render automaton's iterations with approx. 30-35 FPS.
This is a pretty dirty hack and works only because we have small amount of colors, as (think so, but can't prove that) the number of frames in a loop equals to the number of colors used.