From: Marco Costalba Date: Mon, 8 Nov 2010 19:49:40 +0000 (+0100) Subject: Let bench to have full defaults arguments X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=660378d10e99f435df347f317878d7d2d9eade16 Let bench to have full defaults arguments Now stockfish bench' defaults to stockfish bench 128 1 12 default depth that is the most used line (at least by me) No functional change. Signed-off-by: Marco Costalba --- diff --git a/src/benchmark.cpp b/src/benchmark.cpp index a4d2939f..02539927 100644 --- a/src/benchmark.cpp +++ b/src/benchmark.cpp @@ -22,7 +22,6 @@ //// Includes //// #include -#include #include #include "search.h" @@ -60,21 +59,25 @@ static const string BenchmarkPositions[] = { //// /// benchmark() runs a simple benchmark by letting Stockfish analyze a set -/// of positions for a given time each. There are four parameters; the +/// of positions for a given limit each. There are five parameters; the /// transposition table size, the number of search threads that should -/// be used, the time in seconds spent for each position (optional, default -/// is 60) and an optional file name where to look for positions in fen -/// format (default are the BenchmarkPositions defined above). +/// be used, the limit value spent for each position (optional, default +/// is ply 12), an optional file name where to look for positions in fen +/// format (default are the BenchmarkPositions defined above) and the type +/// of the limit value: depth (default), time in secs or number of nodes. /// The analysis is written to a file named bench.txt. -void benchmark(const string& commandLine) { +void benchmark(int argc, char* argv[]) { - istringstream csStr(commandLine); vector positions; - string ttSize, threads, limit, posFile, limitType; + string ttSize, threads, valStr, posFile, valType; int val, secsPerPos, maxDepth, maxNodes; - csStr >> ttSize >> threads >> limit >> posFile >> limitType; + ttSize = argc > 2 ? argv[2] : "128"; + threads = argc > 3 ? argv[3] : "1"; + valStr = argc > 4 ? argv[4] : "12"; + posFile = argc > 5 ? argv[5] : "default"; + valType = argc > 6 ? argv[6] : "depth"; Options["Hash"].set_value(ttSize); Options["Threads"].set_value(threads); @@ -83,11 +86,11 @@ void benchmark(const string& commandLine) { Options["Search Log Filename"].set_value("bench.txt"); secsPerPos = maxDepth = maxNodes = 0; - val = atoi(limit.c_str()); + val = atoi(valStr.c_str()); - if (limitType == "depth" || limitType == "perft") + if (valType == "depth" || valType == "perft") maxDepth = val; - else if (limitType == "time") + else if (valType == "time") secsPerPos = val * 1000; else maxNodes = val; @@ -123,7 +126,7 @@ void benchmark(const string& commandLine) { int dummy[2] = { 0, 0 }; Position pos(*it, 0); cerr << "\nBench position: " << cnt << '/' << positions.size() << endl << endl; - if (limitType == "perft") + if (valType == "perft") { int64_t perftCnt = perft(pos, maxDepth * ONE_PLY); cerr << "\nPerft " << maxDepth << " result (nodes searched): " << perftCnt << endl << endl; diff --git a/src/main.cpp b/src/main.cpp index 78a91aff..e83c2cc5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -38,13 +38,13 @@ using namespace std; extern void uci_main_loop(); -extern void benchmark(const std::string& commandLine); +extern void benchmark(int argc, char* argv[]); //// //// Functions //// -int main(int argc, char *argv[]) { +int main(int argc, char* argv[]) { // Disable IO buffering cout.rdbuf()->pubsetbuf(NULL, 0); @@ -71,17 +71,12 @@ int main(int argc, char *argv[]) { } else // Process command line arguments { - if (string(argv[1]) != "bench" || argc < 4 || argc > 7) - cout << "Usage: stockfish bench " + if (string(argv[1]) != "bench" || argc > 7) + cout << "Usage: stockfish bench [hash size = 128] [threads = 1] " << "[limit = 12] [fen positions file = default] " << "[depth, time, perft or node limited = depth]" << endl; else - { - string val = argc > 4 ? argv[4] : "12"; - string fen = argc > 5 ? argv[5] : "default"; - string lim = argc > 6 ? argv[6] : "depth"; - benchmark(string(argv[2]) + " " + string(argv[3]) + " " + val + " " + fen + " " + lim); - } + benchmark(argc, argv); } Application::free_resources();