diff --git a/docs/stats.md b/docs/stats.md index d5a76b61..2a2d3a07 100644 --- a/docs/stats.md +++ b/docs/stats.md @@ -4,6 +4,14 @@ Simplest usage: `stockfish.exe gather_statistics all input_file a.binpack` +Any name that doesn't designate an argument name or is not an argument will be interpreted as a group name. + +## Parameters + +`input_file` - the path to the .bin or .binpack input file to read + +`max_count` - the maximum number of positions to process. Default: no limit. + ## Groups `all` diff --git a/src/learn/stats.cpp b/src/learn/stats.cpp index d8224760..8efbeb6f 100644 --- a/src/learn/stats.cpp +++ b/src/learn/stats.cpp @@ -125,7 +125,8 @@ namespace Learner::Stats void do_gather_statistics( const std::string& filename, - std::vector>& statistic_gatherers) + std::vector>& statistic_gatherers, + std::uint64_t max_count) { Thread* th = Threads.main(); Position& pos = th->rootPos; @@ -154,7 +155,7 @@ namespace Learner::Stats } uint64_t num_processed = 0; - for (;;) + while (num_processed < max_count) { auto v = in->next(); if (!v.has_value()) @@ -196,6 +197,7 @@ namespace Learner::Stats std::vector> statistic_gatherers; std::string input_file; + std::uint64_t max_count = std::numeric_limits::max(); while(true) { @@ -207,11 +209,13 @@ namespace Learner::Stats if (token == "input_file") is >> input_file; + else if (token == "max_count") + is >> max_count; else registry.add_statistic_gatherers_by_group(statistic_gatherers, token); } - do_gather_statistics(input_file, statistic_gatherers); + do_gather_statistics(input_file, statistic_gatherers, max_count); } }