Белый Антон, 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 changes from last commit and use non-caching version, which is able to render automaton's iterations with approx. 30-35 FPS.