static void CrudTest(ISimpleEmployeeRepository repo)
{
s_DataSource.Sql(@"DELETE FROM Sales.Customer;DELETE FROM HR.Employee;").Execute();
//actual
var spans = new List<double>(Iterations);
for (var i = 0; i < Iterations; i++)
{
var sw = Stopwatch.StartNew();
CrudTestCore(repo);
sw.Stop();
spans.Add(sw.Elapsed.TotalMilliseconds);
}
Trace.WriteLine("Run Duration: " + spans.Average().ToString("N2") + " ms per iteration. Min: " + spans.Min().ToString("N2") + " ms. Max: " + spans.Max().ToString("N2") + " ms.");
Trace.WriteLine("");
Trace.WriteLine("");
//foreach (var span in spans)
// Trace.WriteLine(" " + span.ToString("N2"));
if (DiscardHighLow && Iterations > 10)
{
//Remove the highest and lowest two to reduce OS effects
spans.Remove(spans.Max());
spans.Remove(spans.Max());
spans.Remove(spans.Min());
spans.Remove(spans.Min());
}
Trace.WriteLine("Run Duration: " + spans.Average().ToString("N2") + " ms per iteration. Min: " + spans.Min().ToString("N2") + " ms. Max: " + spans.Max().ToString("N2") + " ms.");
long frequency = Stopwatch.Frequency;
Trace.WriteLine($" Timer frequency in ticks per second = {frequency}");
long nanosecPerTick = (1000L * 1000L * 1000L) / frequency;
Trace.WriteLine($" Timer is accurate within {nanosecPerTick} nanoseconds");
}