Author: Jon Dart
Date: 21:52:34 07/09/04
I've done some recent testing of Arasan with various compilers and compile flags, on a couple of different hardware platforms. The 3 compilers I have access to are Visual C++ 6.0 with SP5, Visual C++ .NET (via Microsoft's Visual C++ Toolkit download) and the Intel C++ 8.0 compiler. I used these two test positions,one in the middle game and one in the endgame, at 60 seconds per position, 64MB hash: [D] r3r1k1/pb1n1p2/1p1p1n1p/q1pPpN2/2P4p/2PBPP2/P1Q3PP/1R3RK1 w - - [D] 4R3/1k4p1/8/pp4P1/8/3K4/1b5P/8 w - - bm Re2 I tested with and without /DUSE_ASM, which selects some inline assembly routines - mostly these use bit scan instructions instead of table lookups to find next bit set, etc. These were the compile flags used: VC++ 6.0: /G6 /Gr /GX /O2 /Op /Ob2 VC++ .NET: /G7 /EHs /EHc /Ox /Gr /Oy /Ob2 Intel 8.0: /G7 /Qvc6 /Ox /Gr /Oy /Ob2 Note that a few parts of the program are not optimized or are built with different flags - in particular the tablebase code is compiled with /Os (optimize for space). But I did this consistently. <pre> AMD 2500+ (Barton) system. compiler middlegame endgame Intel C++ 8.0 USE_ASM 403 knps 619 knps Intel C++ 8.0 no ASM 430 knps 624 knps Visual C++ 6.0 SP5 USE_ASM 469 knps 680 knps Visual C++ 6.0 SP5 no ASM 495 knps 752 knps Visual C++ .NET USE_ASM 487 knps 728 knps Visual C++ .NET no ASM 571 knps 795 knps P4 3.06GHz system. compiler middlegame endgame Intel C++ 8.0 USE_ASM 500 knps 793 knps Intel C++ 8.0 no ASM 484 knps 777 knps Visual C++ 6.0 SP5 USE_ASM 513 knps 803 knps Visual C++ 6.0 SP5 no ASM 517 knps 816 knps Visual C++ .NET USE_ASM 581 knps 875 knps Visual C++ .NET no ASM 575 knps 874 knps </pre> Generally it was surprising to me that the Intel compiler gave the worst results, even on Intel hardware. Caveat here: I may not have found the best optimizations flags for this compiler, and haven't yet tried the profile-based optimization or multi-module optimizations this compiler supports. Also note that inline assembly sometimse gives slightly better results on the Intel platform but is a great deal worse on the AMD 2500+ (comparing on a AMD64 would be interesting but I don't have access to that architecture). I don't mean to draw general conclusions here - these are just the results for my program. Another puzzle: the Intel compiler .exe files are about 1/2 the size of the Microsoft C++ .exe files. I have no idea why. I'd like to get the size of the Microsoft .exes down, so any hints would be appreciated. --Jon
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.