Author: James Swafford
Date: 18:30:44 02/23/01
Go up one level in this thread
On February 23, 2001 at 13:46:07, James Swafford wrote:
Dann emailed me the following results earlier this afternoon:
"THIS IS THE INTEL C++ 5.0 COMPILER RESULTS:"
mean node rate for benchmark -> 501193 n/s
"THIS IS THE MS VC++ 6.0 COMPILER RESULTS:"
mean node rate for benchmark -> 378883 n/s
"THIS IS THE GCC gcc-2.95.2-6 COMPILER RESULTS:"
mean node rate for benchmark -> 322735 n/s
"THIS IS THE GCC gcc-2.95.2-6 COMPILER RESULTS (Swafford settings):"
mean node rate for benchmark -> 362437 n/s
So for him, the msvc build came out faster than the gcc,
but not by a very large margin at all: 378883/362437 = 4.5% faster.
Most claimed it would be as much as 30-40% faster.
I'm curious about two things:
1. The superior (far superior) compilation of the Intel compiler.
2. Variability in results. In my test, the gcc build was
(slightly) faster, in Dann's, the msvc build (4.5% faster)
Dann stated he thought he could squeeze more speed out of the
thing.
--
James
>Below are a couple quick tests I ran to compare executable speeds of one
>of my programs using MSVC 6 pro and the latest Cygwin.
>
>The tests were run on a Dell laptop running WinNT, 750 Mhz PIII, 512 mb ram.
>
>The first test was the WAC suite (first 100 problems) run at 10 sec/problem.
>The summary reports below show the avg node counts at the bottom.
>
>The second test is an internal bench command that runs the nolot test
>suite at 30 secs/problem, then computes avg nps. The function is
>attached below. Disregard the comparisons to the K6-2 and Athlon -
>I don't remember which compiler I used when I came up with those numbers,
>and the program has changed a bit since.
>
>Here's the summary:
>Test 1 (WAC 1-100 @ 10 sec.)
>cygwin:
> interior: 398622; frontier: 2429828 (node counts)
>msvc 6:
> interior: 384231; frontier: 2331737
>
>Test 2 (nolot bench, 30 sec./problem)
>cygwin:
> mean node rate for benchmark -> 308177 n/s
>msvc 6:
> mean node rate for benchmark -> 293639 n/s
>
>
>
>
>
>
>
>FROM MSVC 6, "MAXIMIZE SPEED"
>------------------------------------
> SUMMARY REPORT
>------------------------------------
>
>fixed depth=20
>total problems=100; #correct=65; #incorrect=35
>incorrect problems: 2 11 14 15 18 21 23 26 30 32 33 35 49 52 55 62 66 68 71 73
>74 78 79 80 81 83 86 87 88 90 91 92 93 100
>Avg. Node Counts -> interior: 384231; frontier: 2331737
>
>execution complete, terminating process...
>
>SECOND TEST FOR MSVC:
>---------------------
>benchmark complete...
>
>mean node rate for benchmark -> 293639 n/s
>compared to K6-2 400 mhz, 128 mb pc66 sdram: 1.39x faster
>compared to Athlon 700 mhz, 128 mb nvdram: 0.09x slower
>results have been logged in logfile.
>
>execution complete, terminating process...
>
>
>My program doesn't know it's head from its a*@ yet, it's small,
>doesn't use hash or quiescence, or much of any search heuristic
>for that matter...
>
>Thoughts?
>
>--
>James
>
>
>FROM CYGWIN (DLL 1.1.8), gcc port v. 2.95.2-6, compiled with "-O"
>------------------------------------
> SUMMARY REPORT
>------------------------------------
>
>fixed depth=20
>total problems=100; #correct=66; #incorrect=34
>incorrect problems: 2 11 14 15 18 21 23 26 30 32 33 35 49 52 55 62 68 70 73 74
>78 79 80 81 83 86 87 88 90 91 92 93 100
>Avg. Node Counts -> interior: 398622; frontier: 2429828
>
>execution complete, terminating process...
>
>
>AND THE SECOND TEST FOR CYGWIN
>------------------------------
>benchmark complete...
>
>mean node rate for benchmark -> 308177 n/s
>compared to K6-2 400 mhz, 128 mb pc66 sdram: 1.51x faster
>compared to Athlon 700 mhz, 128 mb nvdram: 0.04x slower
>results have been logged in logfile.
>
>execution complete, terminating process...
>
>
>
>--------------------------------------------------------------------
>
>void Bench(void)
>{
> unsigned int benchnps=0,probnps,c;
> unsigned int k62_400=122959,athlon700=322591;
> float result;
> char output[100];
> char problem[11][80]= {
> {"r3qb1k/1b4p1/p2pr2p/3n4/Pnp1N1N1/6RP/1B3PP1/1B1QR1K1 w - - g4h6;"},
> {"r4rk1/pp1n1p1p/1nqP2p1/2b1P1B1/4NQ2/1B3P2/PP2K2P/2R5 w - - c1c5;"},
> {"r2qk2r/ppp1b1pp/2n1p3/3pP1n1/3P2b1/2PB1NN1/PP4PP/R1BQK2R w - - f3g5;"},
> {"r1b1kb1r/1p1n1ppp/p2ppn2/6BB/2qNP3/2N5/PPP2PPP/R2Q1RK1 w - - d4e6;"},
> {"r2qrb1k/1p1b2p1/p2ppn1p/8/3NP3/1BN5/PPP3QP/1K3RR1 w - - e4e5;"},
> {"rnbqk2r/1p3ppp/p7/1NpPp3/QPP1P1n1/P4N2/4KbPP/R1B2B1R b - - a6b5;"},
> {"1r1bk2r/2R2ppp/p3p3/1b2P2q/4QP2/4N3/1B4PP/3R2K1 w - - d1d8;"},
> {"r3rbk1/ppq2ppp/2b1pB2/8/6Q1/1P1B3P/P1P2PP1/R2R2K1 w - - d3h7;"},
> {"r4r1k/4bppb/2n1p2p/p1n1P3/1p1p1BNP/3P1NP1/qP2QPB1/2RR2K1 w - - f3g5;"},
> {"r1b2rk1/1p1nbppp/pq1p4/3B4/P2NP3/2N1p3/1PP3PP/R2Q1R1K w - - f1f7;"},
> {"r1b3k1/p2p1nP1/2pqr1Rp/1p2p2P/2B1PnQ1/1P6/P1PP4/1K4R1 w - - g6h6;"}};
>
> Print("running benchmark...\n");
> Print("This benchmark consists of eleven problems, each taking\n");
> Print("30 seconds. This benchmark can be thought of as an integer\n");
> Print("op test. It is extremely processor intensive, so for\n");
> Print("accurate results, you'll need to refrain from using the\n");
> Print("system until the final problem is complete.\n\n");
>
> for (c=0;c<11;c++) {
> sprintf(output,"Problem %d\n",c+1);
> Print(output);
> Print(problem[c]);
> Print("\n");
> SetTSPosition(problem[c],0);
> search_time=30000; /* 30000 milliseconds = 30 seconds */
> Search(&gp,20);
> sprintf(output,"node counts -> total=%d; interior=%d; frontier=%d\n",
> nodes+frontier_nodes,nodes,frontier_nodes);
> Print(output);
> probnps=(nodes+frontier_nodes)*100/(exit_time/10);
> sprintf(output,"node rate -> %d nps\n\n\n",probnps);
> Print(output);
> benchnps += probnps;
> }
> Print("benchmark complete...\n\n");
> benchnps/=11;
> sprintf(output,"mean node rate for benchmark -> %d n/s\n",benchnps);
> Print(output);
> result=(float)abs(k62_400-benchnps);
> if (benchnps<k62_400)
> sprintf(output,"compared to K6-2 400 mhz, 128 mb pc66 sdram: %3.2fx
>slower\n",
> result/k62_400);
> else if (benchnps>k62_400)
> sprintf(output,"compared to K6-2 400 mhz, 128 mb pc66 sdram: %3.2fx
>faster\n",
> result/k62_400);
> else sprintf(output,"compared to K6-2 400 mhz, 128 mb pc66 sdram:
>EQUAL!!!\n");
> Print(output);
>
> result=(float)abs(athlon700-benchnps);
> if (benchnps<athlon700)
> sprintf(output,"compared to Athlon 700 mhz, 128 mb nvdram: %3.2fx
>slower\n",
> result/athlon700);
> else if (benchnps>athlon700)
> sprintf(output,"compared to Athlon 700 mhz, 128 mb nvdram: %3.2fx
>faster\n",
> result/athlon700);
> else sprintf(output,"compared to Athlon 700 mhz, 128 mb nvdram: EQUAL!!!\n");
> Print(output);
>
> Print("results have been logged in logfile.\n\n");
>}
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.