"Putting a (node) counter into the inner loop of a program costs performance. So it's better for speed to avoid this and count (much bigger) nodes in an outer loop. So this has nothing to do with obfuscating but with optimizing speed."
"Putting a (node) counter into the inner loop of a program costs performance. So it's better for speed to avoid this and count (much bigger) nodes in an outer loop. So this has nothing to do with obfuscating but with optimizing speed."
Jouni
That is simply a crock. It is almost certain that a simple nodes++ will cost _zero_. That will get scheduled by the out-of-order-execution hardware and done at a time when the CPU is stalled anyway, so that the cost is exactly zero.
It has _everything_ to do with obfuscating, regardless of what they say... I've been about performance from day one yet I still count nodes correctly. Anyone can feel free to look in search.c and quiesce.c and remove the lines of code "tree->nodes_searched++;" and see what that does to speed. Then you get truth rather than crap.
The annoying thing about Rybka's node count business is that they always answered that question (I mean Vas and CO) the same way: Rybka counts differently. Well, why on Earth is secret what exactly Rybka counts, does it skips qnodes, does it count whole lines for one node or ...
So anyone with even a nibble of comprehension about computer chess would think that something is indeed a crap. Otherwise, we wouldn't ask ourselves that cyclic question for the last couple of years or so. But it's author's decision after all.
Do you guys count all the nodes in the tree your engine explore, or only the terminal leaves? My engine counts them all. Maybe Rybka only counts the evaluated terminal leaves? (so the counter might be in eval() instead of the search routines).
JuLieN wrote:Do you guys count all the nodes in the tree your engine explore, or only the terminal leaves? My engine counts them all. Maybe Rybka only counts the evaluated terminal leaves? (so the counter might be in eval() instead of the search routines).
Most people count all the nodes. Sometimes, people have slight differences of opinion as to what constitutes a node (e.g. a singlular reply may not be counted since no real analysis is needed -- junior does this IIRC). Sometimes, people do not count hashed nodes when there is a hash hit.
In the case of Rybka, the node count is apparently intended to be humorous, along with the depth.
But why does it matter if Rybka counts its nodes differently? Node counts only make sense for the program itself and cannot be compared with other programs.
The node count of Crafty cannot be compared with the node count of Stockfish.
The only comparison that makes sense is the node count of the same program on different machines. This gives an indication of the relative speed of machines. You can do this comparison with Rybka's node count on different machines.
yes, that is clear and we know that, but if they said different it seems nothing to do with normaly computerchess, it is only like a fake node outputs or randomly calculations to hide something.