Advertisement
Guest User

Untitled

a guest
May 21st, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.16 KB | None | 0 0
  1. public class Test : MonoBehaviour
  2. {
  3.     public List<GameObject> TestObjects = new List<GameObject>();
  4.     private int _offset = 0;
  5.     private byte[] data;
  6.     private IntPtr ptr;
  7.  
  8.  
  9.     // Start is called before the first frame update
  10.     void Start()
  11.     {
  12.         data = new byte[1024];
  13.         ptr = Memory.Allocate(1024);
  14.  
  15.         Log("Test At: " + DateTime.UtcNow);
  16.         Log("Array Span Write: " + ArraySpanTest());
  17.         Log("Array Pointer Write: " + ArrayPointerTest());
  18.         Log("Array Shift Write: " + ArrayShiftTest());
  19.         Log("IntPtr Pointer Write " + IntPtrPointerTest());
  20.         Log("IntPtr Span Write " + IntPtrSpanTest());
  21.         Log("");
  22.  
  23.         Memory.Deallocate(ptr);
  24.         Debug.Log("Finished");
  25.     }
  26.  
  27.     TimeSpan ArraySpanTest()
  28.     {
  29.         var sw = System.Diagnostics.Stopwatch.StartNew();
  30.         for (int i = 0; i < 1000000; i++)
  31.         {
  32.             _offset = 0;
  33.             for (int j = 0; j < TestObjects.Count; j++)
  34.             {
  35.                 BinaryHelper.WriteArraySpan(data, ref _offset, (int)TestObjects[j].transform.position.x);
  36.                 BinaryHelper.WriteArraySpan(data, ref _offset, (int)TestObjects[j].transform.position.y);
  37.                 BinaryHelper.WriteArraySpan(data, ref _offset, (int)TestObjects[j].transform.position.z);
  38.             }
  39.         }
  40.         sw.Stop();
  41.         return sw.Elapsed;
  42.     }
  43.     TimeSpan ArrayPointerTest()
  44.     {
  45.         var sw = System.Diagnostics.Stopwatch.StartNew();
  46.         for (int i = 0; i < 1000000; i++)
  47.         {
  48.             _offset = 0;
  49.             for (int j = 0; j < TestObjects.Count; j++)
  50.             {
  51.                 BinaryHelper.WritePointer(data, ref _offset, (int)TestObjects[j].transform.position.x);
  52.                 BinaryHelper.WritePointer(data, ref _offset, (int)TestObjects[j].transform.position.y);
  53.                 BinaryHelper.WritePointer(data, ref _offset, (int)TestObjects[j].transform.position.z);
  54.             }
  55.         }
  56.         sw.Stop();
  57.         return sw.Elapsed;
  58.     }
  59.     TimeSpan ArrayShiftTest()
  60.     {
  61.         var sw = System.Diagnostics.Stopwatch.StartNew();
  62.         for (int i = 0; i < 1000000; i++)
  63.         {
  64.             _offset = 0;
  65.             for (int j = 0; j < TestObjects.Count; j++)
  66.             {
  67.                 BinaryHelper.ShiftInt(data, ref _offset, (int)TestObjects[j].transform.position.x);
  68.                 BinaryHelper.ShiftInt(data, ref _offset, (int)TestObjects[j].transform.position.y);
  69.                 BinaryHelper.ShiftInt(data, ref _offset, (int)TestObjects[j].transform.position.z);
  70.             }
  71.         }
  72.         sw.Stop();
  73.         return sw.Elapsed;
  74.     }
  75.     TimeSpan IntPtrPointerTest()
  76.     {
  77.         var sw = System.Diagnostics.Stopwatch.StartNew();
  78.         for (int i = 0; i < 1000000; i++)
  79.         {
  80.             _offset = 0;
  81.             for (int j = 0; j < TestObjects.Count; j++)
  82.             {
  83.                 BinaryHelper.WritePtrIntPtr(ptr, ref _offset, (int)TestObjects[j].transform.position.x);
  84.                 BinaryHelper.WritePtrIntPtr(ptr, ref _offset, (int)TestObjects[j].transform.position.y);
  85.                 BinaryHelper.WritePtrIntPtr(ptr, ref _offset, (int)TestObjects[j].transform.position.z);
  86.             }
  87.         }
  88.         sw.Stop();
  89.         return sw.Elapsed;
  90.     }
  91.     TimeSpan IntPtrSpanTest()
  92.     {
  93.         var sw = System.Diagnostics.Stopwatch.StartNew();
  94.         for (int i = 0; i < 1000000; i++)
  95.         {
  96.             _offset = 0;
  97.             for (int j = 0; j < TestObjects.Count; j++)
  98.             {
  99.                 BinaryHelper.WriteIntPtrSpan(ptr, ref _offset, (int)TestObjects[j].transform.position.x);
  100.                 BinaryHelper.WriteIntPtrSpan(ptr, ref _offset, (int)TestObjects[j].transform.position.y);
  101.                 BinaryHelper.WriteIntPtrSpan(ptr, ref _offset, (int)TestObjects[j].transform.position.z);
  102.             }
  103.         }
  104.         sw.Stop();
  105.         return sw.Elapsed;
  106.     }
  107.     // Update is called once per frame
  108.     void Update()
  109.     {
  110.  
  111.     }
  112.  
  113.     void Log(object value)
  114.     {
  115.         using (StreamWriter writer = new StreamWriter("Result.txt", true))
  116.         {
  117.             writer.WriteLine(value);
  118.         }
  119.  
  120.     }
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement