Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Speeding code

Author: Dann Corbit

Date: 12:33:49 05/12/03

Go up one level in this thread


On May 12, 2003 at 10:38:57, Fermin Serrano wrote:

>Programming my engine I have same doubts (many, only post same concerning
>speed):
>	Question 1:
>	-----------------
>	I would like to know how jumps can slow down my engine. I mean, if I have a
>function like this:
>
>	int eval () {
>		r1 = {	code to analyze knight position 	}
>		r2 = {	code to analyze bishop			}
>		etc
>		return r1[side]-r1[c_side]+r2[side]-r2[c_side]+ .... etc
>	}
>
>	if I replace r1 = eval_knight_position(), r2=eval_bishop_position(), etc....
>how many could this slow down the code? I think this obviously is slower because
>it add jump and stack code, but is better in terms of clarity and code
>organization... so I want to know the speed efects and know when to apply
>functions calls or paste same code.

Mispredicted branches are very expensive.  You can eliminate some of them by
keeping separate piece lists by type.

>	Question 2:
>	-----------------
>	Are 'and' operations faster than == operator?.
>	I can use "if (flag == TRUE)" or "if (flag & TRUE)" with the same effect. What
>is faster?

Write the one that is the most clear.  Attempted optimizations of this type are
a big mistake.

>	Question 3:
>	-----------------
>	To copy a structure into other, what is faster, doing by copy each of his
>elements or use a memcpy?

The difference will be very small, either way.

>	Question 4:
>	-----------------
>	Does any of you use assambler code for any part of your engine code? why? what
>part?

Usually, this is reserved for some low level bit operations such as population
count, firstbit, etc.

>	I Know algorithm implementations is by far the most important thing to speed
>the programs.

That is the third most important thing.

The most important thing is to make the code as correct as possible.
The second most important thing is to make the code as clear as possible.

After achieving #1 and #2, then you should profile.
After you profile, you will know what needs a push.

IMO-YMMV



This page took 0 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.