private async IAsyncEnumerable <IPerftPosition> ParseEpd(EpdOptions options) { _epdParser.Settings.Filename = options.Epds.First(); var sw = Stopwatch.StartNew(); var parsedCount = await _epdParser.ParseAsync().ConfigureAwait(false); sw.Stop(); var elapsedMs = sw.ElapsedMilliseconds; _log.Information("Parsed {0} epd entries in {1} ms", parsedCount, elapsedMs); var perftPositions = _epdParser.Sets.Select(set => PerftPositionFactory.Create(set.Id, set.Epd, set.Perft)); foreach (var perftPosition in perftPositions) { yield return(perftPosition); } }