Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Transposition tables and the use of the operators "&" and "%"

Author: Dieter Buerssner

Date: 13:24:45 12/03/04

Go up one level in this thread


On December 03, 2004 at 16:09:43, martin fierz wrote:

>i have always found & to be a surprisingly large amount faster than %, even when
>using #defined power-of-2-constants.

Hmmm - can you show an example? (just a code snippet)

I assume, you used unsigned integers (for signed integers, the optimization may
not be possible).

Did you do % in 64-bit?

Cheers,
Dieter


G:\src>type martin.c
#define CONST (1024*1024)

unsigned mod_method(unsigned long hk)
{
  return hk%CONST;
}

unsigned and_method(unsigned long hk)
{
  return hk&(CONST-1);
}

G:\src>cl -O2 -c -FA martin.c
Optimierender Microsoft (R) 32-Bit C/C++-Compiler, Version 12.00.8168, fuer x86
Copyright (C) Microsoft Corp 1984-1998. Alle Rechte vorbehalten.

martin.c

G:\src>type martin.asm
[...]
_hk$ = 8
_mod_method PROC NEAR                                   ; COMDAT
; File martin.c
; Line 5
        mov     eax, DWORD PTR _hk$[esp-4]
        and     eax, 1048575                            ; 000fffffH
; Line 6
        ret     0
_mod_method ENDP
_TEXT   ENDS
PUBLIC  _and_method
;       COMDAT _and_method
_TEXT   SEGMENT
_hk$ = 8
_and_method PROC NEAR                                   ; COMDAT
; Line 10
        mov     eax, DWORD PTR _hk$[esp-4]
        and     eax, 1048575                            ; 000fffffH
; Line 11
        ret     0
_and_method ENDP
_TEXT   ENDS
END






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.