Parser rewrite
This commit is contained in:
@@ -20,13 +20,10 @@ public class ExtractionBenchmarks
|
||||
private byte[] _json = null!;
|
||||
private ISearchExpression _query = null!;
|
||||
|
||||
private Regex _flatInterpreted = null!;
|
||||
private Regex _flatCompiled = null!;
|
||||
private Regex _flatSourceGen = null!;
|
||||
private Regex _technologyBlock = null!;
|
||||
private Regex _pathAwareCompiled = null!;
|
||||
private Regex _pathAwareNonBacktracking = null!;
|
||||
private Regex _countriesBlock = null!;
|
||||
private PcreRegex _pcreFlat = null!;
|
||||
private PcreRegex _pcrePathAware = null!;
|
||||
|
||||
[GlobalSetup]
|
||||
@@ -37,13 +34,10 @@ public class ExtractionBenchmarks
|
||||
_json = File.ReadAllBytes(BenchData.JsonPath);
|
||||
_query = SearchExpressionCompiler.Compile(BenchData.PdxQuery);
|
||||
|
||||
_flatInterpreted = new Regex(Extractors.FlatPattern, RegexOptions.None);
|
||||
_flatCompiled = new Regex(Extractors.FlatPattern, RegexOptions.Compiled);
|
||||
_flatSourceGen = Extractors.FlatSourceGen();
|
||||
_technologyBlock = new Regex(Extractors.TechnologyBlockPattern, RegexOptions.Compiled);
|
||||
_pathAwareCompiled = new Regex(Extractors.PathAwarePattern, RegexOptions.Compiled);
|
||||
_pathAwareNonBacktracking = new Regex(Extractors.PathAwarePattern, RegexOptions.NonBacktracking);
|
||||
_countriesBlock = new Regex(Extractors.CountriesBlockPattern, RegexOptions.Compiled);
|
||||
_pcreFlat = new PcreRegex(Extractors.FlatPattern, PcreOptions.Compiled);
|
||||
_pcrePathAware = new PcreRegex(Extractors.PathAwarePattern, PcreOptions.Compiled);
|
||||
}
|
||||
|
||||
@@ -53,26 +47,14 @@ public class ExtractionBenchmarks
|
||||
[Benchmark(Description = "Full parse, then select")]
|
||||
public long FullParse() => Extractors.FullParseThenSelect(_pdx);
|
||||
|
||||
[Benchmark(Description = ".NET Regex flat, interpreted")]
|
||||
public long RegexFlatInterpreted() => Extractors.RegexScan(_flatInterpreted, _pdxText);
|
||||
|
||||
[Benchmark(Description = ".NET Regex flat, compiled")]
|
||||
public long RegexFlatCompiled() => Extractors.RegexScan(_flatCompiled, _pdxText);
|
||||
|
||||
[Benchmark(Description = ".NET Regex flat, source generated")]
|
||||
public long RegexFlatSourceGen() => Extractors.RegexScan(_flatSourceGen, _pdxText);
|
||||
|
||||
[Benchmark(Description = ".NET Regex path aware, compiled")]
|
||||
public long RegexPathAwareCompiled() => Extractors.RegexScan(_pathAwareCompiled, _pdxText);
|
||||
|
||||
[Benchmark(Description = ".NET Regex path aware, NonBacktracking")]
|
||||
public long RegexPathAwareNonBacktracking() => Extractors.RegexScan(_pathAwareNonBacktracking, _pdxText);
|
||||
|
||||
[Benchmark(Description = ".NET Regex balanced block + flat")]
|
||||
public long RegexBalancedTwoStage() => Extractors.RegexTwoStage(_countriesBlock, _flatCompiled, _pdxText);
|
||||
|
||||
[Benchmark(Description = "PCRE.NET flat, JIT compiled")]
|
||||
public long PcreFlat() => Extractors.PcreScan(_pcreFlat, _pdxText);
|
||||
[Benchmark(Description = ".NET Regex balanced block + inner scan")]
|
||||
public long RegexBalancedTwoStage() => Extractors.RegexTwoStage(_countriesBlock, _technologyBlock, _pdxText);
|
||||
|
||||
[Benchmark(Description = "PCRE.NET path aware, JIT compiled")]
|
||||
public long PcrePathAware() => Extractors.PcreScan(_pcrePathAware, _pdxText);
|
||||
|
||||
Reference in New Issue
Block a user