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!
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.