kendfrey

Stopwatch Profiler Test

Mar 22nd, 2012
556
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.83 KB | None | 0 0
  1. #define PROFILE
  2.  
  3. using System;
  4. using System.Diagnostics;
  5. using System.Numerics;
  6.  
  7. namespace profiletest
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             Stopwatch total = Stopwatch.StartNew();
  14. #if PROFILE
  15.             Stopwatch initn = new Stopwatch();
  16.             Stopwatch initf = new Stopwatch();
  17.             Stopwatch loop = new Stopwatch();
  18.             Stopwatch body = new Stopwatch();
  19.             initn.Start();
  20. #endif
  21.             int n = 100;
  22. #if PROFILE
  23.             initn.Stop();
  24.             initf.Start();
  25. #endif
  26.             BigInteger f = 1;
  27. #if PROFILE
  28.             initf.Stop();
  29.             loop.Start();
  30. #endif
  31.             for (int i = n; i > 1; i--)
  32.             {
  33. #if PROFILE
  34.                 loop.Stop();
  35.                 body.Start();
  36. #endif
  37.                 f *= i;
  38. #if PROFILE
  39.                 body.Stop();
  40.                 loop.Start();
  41. #endif
  42.             }
  43. #if PROFILE
  44.             loop.Stop();
  45. #endif
  46.             total.Stop();
  47.             Console.WriteLine(f);
  48.             Console.ReadLine();
  49.             Console.WriteLine("             Line             |  Ticks");
  50.             Console.WriteLine("------------------------------|----------");
  51.             Console.WriteLine("                              |");
  52. #if PROFILE
  53.             Console.WriteLine("int n = 100;                  |{0,10}", initn.ElapsedTicks);
  54.             Console.WriteLine("BigInteger f = 1;             |{0,10}", initf.ElapsedTicks);
  55.             Console.WriteLine("for (int i = n; i > 1; i--)   |{0,10}", loop.ElapsedTicks);
  56.             Console.WriteLine("{                             |");
  57.             Console.WriteLine("    f *= i;                   |{0,10}", body.ElapsedTicks);
  58.             Console.WriteLine("}                             |");
  59.             Console.WriteLine("                              |");
  60. #endif
  61.             Console.WriteLine("Total time:                   |{0,10}", total.ElapsedTicks);
  62. #if PROFILE
  63.             Console.WriteLine("Stopwatch overhead:           |{0,10}", total.ElapsedTicks - initn.ElapsedTicks - initf.ElapsedTicks - loop.ElapsedTicks - body.ElapsedTicks);
  64. #endif
  65.             Console.ReadLine();
  66.         }
  67.     }
  68. }
Add Comment
Please, Sign In to add comment