X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fbenchmark.cpp;h=4c2ba7472703a3c88979678c30a78361d8b51e76;hp=9e63b1c95b01fe48148deae623d4426a8628a8ff;hb=18677852315b960132b0e8daa220c83b1c3c17cd;hpb=691de79eaab9c5fa131a2cf60628da615203bb3a diff --git a/src/benchmark.cpp b/src/benchmark.cpp index 9e63b1c9..4c2ba747 100644 --- a/src/benchmark.cpp +++ b/src/benchmark.cpp @@ -1,13 +1,14 @@ /* - Glaurung, a UCI chess playing engine. - Copyright (C) 2004-2008 Tord Romstad + Stockfish, a UCI chess playing engine derived from Glaurung 2.1 + Copyright (C) 2004-2008 Tord Romstad (Glaurung author) + Copyright (C) 2008 Marco Costalba - Glaurung is free software: you can redistribute it and/or modify + Stockfish is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - Glaurung is distributed in the hope that it will be useful, + Stockfish is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. @@ -58,7 +59,7 @@ const std::string BenchmarkPositions[] = { //// Functions //// -/// benchmark() runs a simple benchmark by letting Glaurung analyze a set +/// benchmark() runs a simple benchmark by letting Stockfish analyze a set /// of positions for a given time each. There are four parameters; the /// transposition table size, the number of search threads that should /// be used, the time in seconds spent for each position (optional, default @@ -70,8 +71,8 @@ void benchmark(const std::string& commandLine) { std::istringstream csVal(commandLine); std::istringstream csStr(commandLine); - std::string ttSize, threads, fileName; - int val, secsPerPos; + std::string ttSize, threads, fileName, timeOrDepth; + int val, secsPerPos, maxDepth = 0; csStr >> ttSize; csVal >> val; @@ -96,6 +97,15 @@ void benchmark(const std::string& commandLine) { csVal >> secsPerPos; csVal >> fileName; + csVal >> timeOrDepth; + + if (timeOrDepth == "time") + secsPerPos *= 1000; + else + { + maxDepth = secsPerPos; + secsPerPos = 0; + } std::vector positions; @@ -120,12 +130,18 @@ void benchmark(const std::string& commandLine) { for (int i = 0; i < 16; i++) positions.push_back(std::string(BenchmarkPositions[i])); + int startTime = get_system_time(); std::vector::iterator it; - for (it = positions.begin(); it != positions.end(); ++it) + int cnt = 1; + for (it = positions.begin(); it != positions.end(); ++it, ++cnt) { - Move moves[1] = {MOVE_NONE}; - int dummy[2] = {0, 0}; + Move moves[1] = {MOVE_NONE}; + int dummy[2] = {0, 0}; Position pos(*it); - think(pos, true, false, 0, dummy, dummy, 0, 0, 0, secsPerPos * 1000, moves); + std::cout << "\nProcessing position " << cnt << '/' << positions.size() << std::endl << std::endl; + think(pos, true, false, 0, dummy, dummy, 0, maxDepth, 0, secsPerPos, moves); } + std::cout << "\n\nBenchmarking finished. Processing time (ms) " << get_system_time() - startTime + << std::endl << "Press any key to exit\n"; + std::cin >> fileName; }