First thing I would try is to eliminate the text display of the 3d Array in the Tool (it is not all that helpful since you can see it in the VCS buttons in any case). Try commenting out the line:
SpaceString := Space printString.
You could also try reducing the time dimension to 4, just enough cells to calculate the next generation, rather than 16 into the future. That would reduce your array size to 16X16X4. So your update step would be something like:
0 to: 15 do: [:i |
0 to: 15 do: [:j |
0 to: 3 do: [:k | ]]]
And of course change the inner loops to:
((i - 1) max: 0) to: ((i + 1) min: 15) do: [:ni |
((j - 1) max: 0) to: ((j + 1) min: 15) do: [:nj |
((k - 1) max: 0) to: ((k + 1) min: 3) do: [:nk |
--
Updating the entire cube at once is an Order n-cubed computation, so when you increase the size from 8 to 16, it is increasing the computational cost from 8 cubed (512) to 16 cubed = (4096) times the number of operations in the inner loop. So another option is to figure out a way to update the cube incrementally rather than doing the entire thing at once.