Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Diagnostics;
- internal class TestUnsafe
- {
- public static unsafe void Main()
- {
- var array = new int[256 * 1048576];
- for (int i = 0; i < array.Length; i++)
- {
- array[i] = i;
- }
- //Trace.Fail("breakpoint");
- int sum;
- var timer = Stopwatch.StartNew();
- {
- sum = 0;
- for (int i = 0; i < array.Length; i += 8)
- {
- sum += array[i] + array[i + 1] + array[i + 2] + array[i + 3] + array[i + 4] + array[i + 5] + array[i + 6] + array[i + 7];
- }
- }
- timer.Stop();
- Console.WriteLine("Safe: {0}ms, sum = {1}", timer.ElapsedMilliseconds, sum);
- fixed (int* arrayPointer = array)
- {
- int* p = arrayPointer;
- timer.Reset();
- timer.Start();
- {
- sum = 0;
- for (int i = 0; i < array.Length; i += 8)
- {
- sum += *p++ + *p++ + *p++ + *p++ + *p++ + *p++ + *p++ + *p++;
- }
- }
- timer.Stop();
- Console.WriteLine("Unsafe: {0}ms, sum = {1}", timer.ElapsedMilliseconds, sum);
- }
- Console.ReadLine();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement