This has certainly undergone massive changes from when I first started on the project several months ago. It is currently a highly work in progress demo, however it is one of the fastest I've found so far on scratch. I've explained some of my optimizations in the notes/credits.
Optimizations: 1: I do not use the stamp blocks, and instead use the pen tool to directly draw a dot. 2: I do not draw air cells at all. 3: The above was true until I hit upon my latest method, which is to not erase per frame at all, but rather over draw updated cells by comparing an updated version of my list with the last frame's list, and drawing the out of sync ones, while syncing that index of the list. This results in the program only drawing updated cells, and not erasing anything.