public PerftRunner(IEpdParser parser, ILogger log, IBuildTimeStamp buildTimeStamp, IPerft perft, IConfiguration configuration, ObjectPool <PerftResult> resultPool, IUci uci) { _epdParser = parser; _log = log; _buildTimeStamp = buildTimeStamp; _perft = perft; _perft.BoardPrintCallback ??= s => _log.Information("Board:\n{0}", s); _resultPool = resultPool; _uci = uci; _uci.Initialize(); _runners = new Func <CancellationToken, IAsyncEnumerable <IPerftPosition> >[] { ParseEpd, ParseFen }; TranspositionTableOptions = Framework.IoC.Resolve <IOptions>(OptionType.TTOptions) as TTOptions; configuration.Bind("TranspositionTable", TranspositionTableOptions); _resultCache = new Dictionary <HashKey, ulong>(256); _outputSettings = new JsonSerializerSettings { Formatting = Formatting.Indented }; _cpu = new CPU(); }
public PerftRunner(IEpdParser parser, ILogger log, IBuildTimeStamp buildTimeStamp, IPerft perft, IPerftResult result, IConfiguration configuration) { _epdParser = parser; _log = log; _buildTimeStamp = buildTimeStamp; _perft = perft; _perft.BoardPrintCallback = PrintBoard; _result = result; _configuration = configuration; _runners = new Func <CancellationToken, IAsyncEnumerable <IPerftPosition> >[] { ParseEpd, ParseFen }; TranspositionTableOptions = Framework.IoC.Resolve <IOptions>(serviceKey: OptionType.TTOptions) as TTOptions; TranspositionTableOptions.Use = configuration.GetValue <bool>("TranspositionTable:Use"); TranspositionTableOptions.Size = configuration.GetValue <int>("TranspositionTable:Size"); }