Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
using System;
using System.Diagnostics;
namespace LogBenchmark
{
class Program
{
private static volatile bool _showLog = true;
static void Main(string[] args)
{
_showLog = false;
Console.WriteLine("Frequency:{0}", Stopwatch.Frequency);
int R = 1000000000;
DateTime begin = DateTime.UtcNow;
long none = Measure(None, R);
long p3 = Measure(NCh_P3, R);
Console.WriteLine("Elapsed: {0}", DateTime.UtcNow - begin);
Console.WriteLine("None total:{0} ticks", none);
Console.WriteLine("N3_1 total:{0} ticks", p3);
Console.WriteLine("None total:{0} s", (double)none / Stopwatch.Frequency);
Console.WriteLine("N3_1 total:{0} s", (double)p3 / Stopwatch.Frequency);
Console.WriteLine("None operation:{0} s", (double)none / Stopwatch.Frequency / R);
Console.WriteLine("N3_1 operation:{0} s", (double)p3 / Stopwatch.Frequency / R);
}
static void None(int a1)
{
}
public static long Measure(Action<int> action, int repeats)
{
action(0);
long start = Stopwatch.GetTimestamp();
for (int j = 0; j < repeats; j++)
action(j);
return Stopwatch.GetTimestamp() - start;
}
internal static void NCh_P3(int a1)
{
Debug("Test message: {0} {1} {2}", a1, a1, a1);
}
internal static void Debug(string frm, int a1, int a2, int a3)
{
if(_showLog)
Console.WriteLine(frm, a1, a2, a3);
}
}
}
Логирование — производительность молчания