diff --git a/SkyScanner.cs b/SkyScanner.cs index 17c9067..816f0a4 100644 --- a/SkyScanner.cs +++ b/SkyScanner.cs @@ -7,12 +7,12 @@ using System.IO; using ln.skyscanner.crawl; using ln.types.threads; using System.Threading; -using ln.logging; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using ln.skyscanner.checks; using System.Collections.Generic; using ln.skyscanner.import.skytron; +using System.Linq; namespace ln.skyscanner { [JsonConverter(typeof(StringEnumConverter))] @@ -51,7 +51,7 @@ namespace ln.skyscanner Arguments = args; String skytronImport = null; - + String benchMark = null; Queue qArguments = new Queue(Arguments); while (qArguments.Count > 0) @@ -65,6 +65,9 @@ namespace ln.skyscanner case "--import-skytron": skytronImport = qArguments.Dequeue(); break; + case "--benchmark": + benchMark = qArguments.Dequeue(); + break; } } @@ -77,6 +80,20 @@ namespace ln.skyscanner si.Import(); } + if (benchMark != null) + { + switch (benchMark) + { + case "odb": + BenchmarkODB(); + break; + default: + Logging.Log(LogLevel.ERROR, "Unknown Benchmark: {0}", benchMark); + break; + } + throw new Exception("Quitting after benchmarking"); + } + } private SkyScanner() { @@ -192,7 +209,26 @@ namespace ln.skyscanner } } + public void BenchmarkODB() + { + int maxIterations = 10000; + for (int i = 0; i < maxIterations; i++) + { + int n = 0; + Logging.Log(LogLevel.INFO, "Benchmark ODB: Iteration {0} of {1}", i, maxIterations); + + foreach (SkyCheckState checkState in SkyScanner.Instance.Entities.SkyCheckStates.ToArray()) + { + SkyScanner.Instance.Entities.SkyCheckStates.Upsert(checkState); + n++; + } + + Logging.Log(LogLevel.INFO, "Saved {0} SkyCheckStates", n); + + } + + } } }