zaphod wrote:Apart from the AI concepts, I also learnt that slower (interpreted) languages should be used only in the first 2 weeks for experimentation. If you stick to them because of ease of development, you might end up regretting later when speed matters!
This looks like an opportunity to promote Common Lisp!
I used it at various stages of the competition as a scripting language, then used the profiler to identify what can be optimized. And optimizations paid off - (adding some type declarations and requesting speed optimizations from the compiler, along with reducing memory allocation) sped up some of the important parts by approximately two orders of magnitude.
Being a CL newbie (one of the points of using it in the contest was to learn more), I didn't even find some obvious spots where I could have gained some more 10x speed-ups (these are parts not already sped up by the aforementioned optimizations, so the last sentence doesn't imply 1000x speedups).
Having a good and easy to use profiler and an easy way to look at the assembly code generated for individual functions makes it easy to squeeze performance.
/Common Lisp promotion over.
I guess some higher level low level languages such as Java, C# and Go permit similar initial exploration followed by code tightening. I have yet to try Python and PyPy.
And, of course, algorithms matter a lot.
One question for the organizers: the official servers have 32 bit or 64 bit operating systems? SBCL obviously uses more memory on 64 bit, but having 16 registers, pentium 2 instructions (like conditional moves) and MMX/SSE must help a little with speed.