
Stopwatch Profiler Test
By:
kendfrey on
Mar 22nd, 2012 | syntax:
C# | size: 1.83 KB | hits: 105 | expires: Never
#define PROFILE
using System;
using System.Diagnostics;
using System.Numerics;
namespace profiletest
{
class Program
{
static void Main(string[] args)
{
Stopwatch total = Stopwatch.StartNew();
#if PROFILE
Stopwatch initn = new Stopwatch();
Stopwatch initf = new Stopwatch();
Stopwatch loop = new Stopwatch();
Stopwatch body = new Stopwatch();
initn.Start();
#endif
int n = 100;
#if PROFILE
initn.Stop();
initf.Start();
#endif
BigInteger f = 1;
#if PROFILE
initf.Stop();
loop.Start();
#endif
for (int i = n; i > 1; i--)
{
#if PROFILE
loop.Stop();
body.Start();
#endif
f *= i;
#if PROFILE
body.Stop();
loop.Start();
#endif
}
#if PROFILE
loop.Stop();
#endif
total.Stop();
Console.WriteLine(f);
Console.ReadLine();
Console.WriteLine(" Line | Ticks");
Console.WriteLine("------------------------------|----------");
Console.WriteLine(" |");
#if PROFILE
Console.WriteLine("int n = 100; |{0,10}", initn.ElapsedTicks);
Console.WriteLine("BigInteger f = 1; |{0,10}", initf.ElapsedTicks);
Console.WriteLine("for (int i = n; i > 1; i--) |{0,10}", loop.ElapsedTicks);
Console.WriteLine("{ |");
Console.WriteLine(" f *= i; |{0,10}", body.ElapsedTicks);
Console.WriteLine("} |");
Console.WriteLine(" |");
#endif
Console.WriteLine("Total time: |{0,10}", total.ElapsedTicks);
#if PROFILE
Console.WriteLine("Stopwatch overhead: |{0,10}", total.ElapsedTicks - initn.ElapsedTicks - initf.ElapsedTicks - loop.ElapsedTicks - body.ElapsedTicks);
#endif
Console.ReadLine();
}
}
}