I'm very grateful for all these interesting replies. Thank you.
There are three basic 1024 element byte arrays.
Led var byte[1024] used to hold the current generation of cells
LedNew var byte [1024] used to to hold the next generation of cells (This is copied into the Led array after evaluation is completed)
NeoLed var byte [1024] used to hold the NeoPixel led data.
This third array is required because the layout of the NeoPixels grid is one continuous string of 1024 leds arranged like a snakes and ladders board.
This is different to the other two arrays which are a conventional X/Y grid layout, so the Led data has to be parsed and re-organised to display correctly on the neopixel grid.
How are people timing the loops etc.
I would be interested in that code so I can see what difference changes make.
Bookmarks