Sunday, January 22, 2006

Optimizing Grassa

Grassa now works. We put it together in record time. At the begining of the week, it took 110 seconds to score a small game, and 80 minutes to score a large game (one that covered the whole field). I've been optimizing the code using Shark (it's real name). Shark is the most amazing program I've ever run. It's a profiler. It samples the program counter during program execution and talies how much time you spend in each function. When it's sampled for 30 seconds, it creates a heirarchical display of what functions dominate the running time. You can look at the assembly, and it'll give you Mac-specific suggestions on how to re-write your code and whatnot...

The assembly suggestions aren't nearly as useful as the structured heirarchy of function calls. The profiler behaves exactly as a profiler should. I can't imagine anything better.

I've got Grassa scoring the small game test case in 17 seconds now, and the large game in 17 1/2 minutes. This scoring function hasn't been tuned yet, but we know it models scores better than previous scoring methods and that ultimately, it will be part of Croquetta's backbone. I remain totally psyched.

No comments: