Benchmarking¶
Loop¶
Repeat action for a specified time and return number of iterations done during the specified time. If time was not specified function will result -1. If no operation has been performed before the specified time has elapsed, the function will return a zero value.
Prototype¶
static int Energy.Core.Benchmark.Loop(Energy.Base.Anonymous.Function, TimeSpan)
Example¶
int count = Energy.Core.Benchmark.Loop(() =>
{
int next = r.Next();
string text = next.ToString();
int.TryParse(text, out next);
}, TimeSpan.FromSeconds(1.0));
Energy.Core.Tilde.WriteLine("Done ~m~default ~w~TryParse~0~ " + count);
Profile¶
Perform a profiling operation by launching the action the specified number of times and returning the result of the profiling.
Prototype¶
static Energy.Core.Benchmark.Result Profile(Energy.Base.Anonymous.Function, int, int)
static Energy.Core.Benchmark.Result Profile(Energy.Base.Anonymous.Function, int, string)
static Energy.Core.Benchmark.Result Profile(Energy.Base.Anonymous.Function, int, int, string)
static Energy.Core.Benchmark.Result Profile(Energy.Base.Anonymous.Function, int)
static Energy.Core.Benchmark.Result Profile(Energy.Base.Anonymous.Function)
Example¶
Energy.Core.Benchmark.Result benchmark;
benchmark = Energy.Core.Benchmark.Profile(() =>
{
long m = 0;
for (int i = 0, n = 0; i < 100000; i++)
{
string s = i.ToString();
if (Energy.Base.Text.TryParse(s, out n))
{
m += n;
}
}
}, 3, 1, "SumTryParse");
Energy.Core.Tilde.WriteLine(benchmark.ToString());
Output¶
Garbage collected in 0.002 s
Time taken by SumTryParse in 3 iterations 0.047 s
Average time of execution 0.024 s