fork download
  1. using System;
  2. using System.Diagnostics;
  3. using System.Text;
  4. //using System.Runtime.CompilerServices;
  5. namespace ConsoleApp
  6. {
  7.  
  8. public class Program
  9. {
  10. const int iterations = 1000 * 1000 * 1;
  11.  
  12. static void Main()
  13. {
  14. // JIT precompile
  15. int x = 0;
  16. //Unsafe(&x, 1);
  17. Safe(new int[1], 1);
  18. SafeJI(new int[1], 1);
  19.  
  20. int size = 1024;
  21. int[] array = new int[size];
  22.  
  23. var sw = new Stopwatch();
  24.  
  25. //sw.Restart();
  26. //fixed (int* ptr = array)
  27. //{
  28. // Unsafe(ptr, array.Length);
  29. //}
  30. //sw.Stop();
  31. //Console.WriteLine("Unsafe:\t{0}", sw.Elapsed);
  32.  
  33. sw = Stopwatch.StartNew();
  34. SafeJI(array, array.Length);
  35. sw.Stop();
  36. Console.WriteLine("SafeJI:\t{0}", sw.Elapsed);
  37.  
  38. sw = Stopwatch.StartNew();
  39. Safe(array, array.Length);
  40. sw.Stop();
  41. Console.WriteLine("Safe :\t{0}", sw.Elapsed);
  42.  
  43.  
  44. //Console.ReadLine();
  45. }
  46.  
  47. //static unsafe void Unsafe(int* array, int n)
  48. //{
  49. // for (int i = 0; i < n; i++)
  50. // for (int j = 0; j < iterations; j++)
  51. // array[i] = i;
  52. //}
  53.  
  54. static void Safe(int[] array, int n)
  55. {
  56. for (int i = 0; i < n; i++)
  57. for (int j = 0; j < iterations; j++)
  58. array[i] = i;
  59. }
  60. static void SafeJI(int[] array, int n)
  61. {
  62. for (int j = 0; j < iterations; j++)
  63. for (int i = 0; i < n; i++)
  64. array[i] = i;
  65. }
  66. }
  67. }
Success #stdin #stdout 2.73s 33896KB
stdin
Standard input is empty
stdout
SafeJI:	00:00:01.4092746
Safe  :	00:00:01.2842751