Computer Chess Club Archives


Search

Terms

Messages

Subject: test results comparing cygwin, msvc binaries

Author: James Swafford

Date: 10:46:07 02/23/01


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.