Computer Chess Club Archives


Search

Terms

Messages

Subject: The key to improving a program

Author: Andrew Wagner

Date: 14:44:55 05/25/04


I do a lot of reading through CCC archives. I use the search engine from here,
and also I'm in the process of reading through the old archives systematically
using the offline reader (I'm in the fall of 2001 currently, I think). Anyway,
sometimes I run across a nugget that makes me just stop and go "whoah". Here's a
quote from one of Bob's posts, originally about hashing algorithms:

>I think the key to improving a program, once it plays legally, is to develop
>a methodology to carefully profile the code, find the hot spots, and then find
>ways to speed up those hot spots. But all the while paying _careful_ attention
>to the overall node counts on a wide range of test positions. A 1% speedup is
>of no use at all if you introduce an error that happens once every billion
>nodes. I can search that many nodes in 15 minutes. I can't stand errors that
>frequently. I have what would probably be called a "zero-tolerance for errors"
>in Crafty. If I make a change that should only make it faster or slower, then
>the node counts must remain constant. If they don't I debug until I find out >why and fix it.

This is a fantastic point. Maybe somewhat obvious to our more experienced
members, but certainly words of wisdom for us newbies. So, my question is, what
methods are you all using for profiling your code? How do you go about
identifying and fixing your hotspots? Do you have a particular test suite you
use, or what? Andrew



This page took 0.01 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.