Geschrieben von:/Posted by: Tord Romstad at 18 April 2004 22:22:13:
Als Antwort auf:/In reply to: Re: A Gothic incident. geschrieben von:/posted by: Sune Fischer at 18 April 2004 20:37:48:
It's not so much for the strength, it's just as much because I just find it
to be a nice feature, ie. announcing mate in 53 in an endgame is pretty 'cool'

Not in my eyes. As long as the engine hasn't computed the whole mating
line itself, the result simply doesn't count.
A question of aesthetics, I think. If I can reduce the size of the executable
by almost 50% with no noticable drop in playing strength, I would almost
always do so.
Whether you show a +9 or a mate value is not significant IMO, aestheticly it is just more pleasing to get a mate value.
Is it cheating to use code you haven't written?
I agree with the aesthetics, but my feeling is to H*ll with that, priority
number 1 is a super strong engine and no silly aesthetics must stand in it's
way!

I really want to add a lot of special cases, pattern detection, endgame eval.
All of that is bound to bloat the binary quite a bit, with each segment hardly
producing any noticable improvement.
I could also remove the fancy SAN printing, remove UCI, remove pgn, remove book support, remove logfile, remove threads and future support for SMP, write it in C instead of C++ etc.
None of that is essentially needed so I could trim it down quite a bit, but the whole project would be a lot less fun to me if I did.
You can try and macro out your functions and see how much it decreases the size.
If I macro out my search including nextmove() it goes down by 12 kb, also 12 kb for the makemove and 20kb for the primary evaluation.
Those are already the biggest hitters in 44 kb, so within 100kb total is almost a certainty.
I don't really think so, and it is not really the reason why I don't regard EGTB mate
announcements as "cool". It would be no more cool if I had written the EGTB code myself.
The point is that the engine didn't really see the mate, it just looked up a value from some
big table. In my eyes, a mate announment doesn't "count" if the engine is unable to calculate
the entire line to mate and all relevant sidelines.
I agree, but only to a certain extent. I would happily double the size of my code if it
would give me 100 or even 50 Elo points, but not if it would give me 10 or 20 points.
In the case of EGTBs, I think the difference is less than 10 points (at least when I add
enough endgame knowledge).
Yes, but it's not quite the same, IMHO. Each single special case doesn't produce any
noticable improvement, but it also doesn't produce a noticable increase in code size.
It's the *sum* of all the small special cases which bloats the binary, but the sum also
produces a significant increase in playing strength.
I could also save a bit here, but not very much. I use plain C, because I unfortunately have
a very strong allergy against C++. I don't use threads, simply because I lack the required
knowledge. SAN printing, UCI, book support and so on isn't that big in Gothmog.
Yes, fun should always have higher priority than everything else, of course.

I guess looking at the .o files is also an accurate way to measure it (at least if you use many
and small source code files, like I do). It looks like the engine internals (eval, move generator,
search, hash table code, and so on) consume about 100kb, EGTB code 70kb, and the book
and IO code 30kb.
Tord