On Nov 29, 2006, at 9:26 AM, Eduardo Sabbatella wrote:

I'm a full time worker. Before starting my engine (a
couple of months ago) by 3rd or 4th try. I concluded
this:

It will be impossible for me to do anything in C, C++
because I will have to focus on not having memory
leaks, range errors, etc.

My engine nowadays is winning agains gnugo on lower
levels. Without time constrait. Ok, gnugo takes 10
secs to play, my engine 90 seconds.

But, something I has sorted out in the beginning:

- I have to optimise  algoritms, not code.

I agree absolutely, and have seen this advice in many books. One went so far as to propose the two rules of optimization:

1. Don't to it.

2. (For advanced programmers only) Don't do it yet.

Algorithmic improvements are much more important than local efficiency improvements.

I think Drake follow the correct path, first optimise
algorithm on Java, then move it to C/C++.

Since computer Go algorithms are always, to some degree, in flux, I'm now leaning toward staying in Java. Yes, C/C++ allows fine control, but it also requires such fine control that it's hard to think about larger algorithmic issues.

Personally, I found that creating objects in Java is
realllly expensive. My engine use a lot arrays of
ints, longs, big linked arrays by reference numbers.
(yes, a'la C... sometimes I have to resize arrays, its
costy, but I found that its a lot cheaper on overall
perfomance than creating objects).

Yes, in both time and space. I intend to go to some lengths to avoid dynamic object creation, e.g., creating all of the objects at startup time and just clearing them out when I need "new" ones. For the most memory-intensive part of the program (the enormous search tree), I intend to use a big array of raw ints. Yes, this will be just as ugly as doing it in C/C++, but at least I'll be able to confine the ugliness to that part of the program.

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/
_______________________________________________
computer-go mailing list
[email protected]
http://www.computer-go.org/mailman/listinfo/computer-go/

Reply via email to