NickGotts wrote:I am running a lot of Python scripts which begin by loading lists of cell-lists, and end by storing more lists of cell-lists. In between, there's generally quite a bit of evolving/running patterns. Which is likely to be quicker, doing this using "evolve", or "putcells", "run", and "getcells"? I appreciate the answer may depend on what patterns I'm running/evolving and for how many generations, but any general guidance would be much appreciated.
Yeah, as you say the answer is definitely "it depends". My rule of thumb in that kind of situation is to try g.evolve() first -- it's usually plenty fast enough, even for fairly long and involved searches.
If you try out the code and the full job will take months or weeks rather than days or hours, then it's probably time to think about using some kind of API like lifelib, rather than sticking with Python and living with the severalfold slowdown. It's not likely that putcells/run/getcells will save you very much, usually, compared with escaping from interpreted scripting languages entirely.
If you're doing something like running Mystery Pattern 1 through Mystery Pattern 1,000,000 to stability, then it's probably better to drop them into a HashLife universe, because then you can run lots of extra ticks at not much extra cost, just to be sure. (With the kind of patterns you've traditionally been interested in, "lots of extra ticks" might not always be enough to be sure of anything... but it doesn't seem like you'd be interested in storing a cell list at the end of a long run of a growing pattern, anyway.)