Advertisement
Guest User

Untitled

a guest
Mar 1st, 2013
386
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 0.99 KB | None | 0 0
  1. using System;
  2. using System.Diagnostics;
  3.  
  4. internal class TestUnsafe
  5. {
  6.     public static unsafe void Main()
  7.     {
  8.         var array = new int[256 * 1048576];
  9.         for (int i = 0; i < array.Length; i++)
  10.         {
  11.             array[i] = i;
  12.         }
  13.  
  14.         //Trace.Fail("breakpoint");
  15.  
  16.         int sum;
  17.         var timer = Stopwatch.StartNew();
  18.         {
  19.             sum = 0;
  20.             for (int i = 0; i < array.Length; i += 8)
  21.             {
  22.                 sum += array[i] + array[i + 1] + array[i + 2] + array[i + 3] + array[i + 4] + array[i + 5] + array[i + 6] + array[i + 7];
  23.             }
  24.         }
  25.         timer.Stop();
  26.  
  27.         Console.WriteLine("Safe: {0}ms, sum = {1}", timer.ElapsedMilliseconds, sum);
  28.  
  29.         fixed (int* arrayPointer = array)
  30.         {
  31.             int* p = arrayPointer;
  32.             timer.Reset();
  33.  
  34.             timer.Start();
  35.             {
  36.                 sum = 0;
  37.                 for (int i = 0; i < array.Length; i += 8)
  38.                 {
  39.                     sum += *p++ + *p++ + *p++ + *p++ + *p++ + *p++ + *p++ + *p++;
  40.                 }
  41.             }
  42.             timer.Stop();
  43.             Console.WriteLine("Unsafe: {0}ms, sum = {1}", timer.ElapsedMilliseconds, sum);
  44.         }
  45.  
  46.         Console.ReadLine();
  47.     }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement