public void BinarySearch_ReturnsIndexToExistingItemFrom2MLongArray() { const int searchValueIndex = 65535; const int itemCount = 2000000; nativeArray = new NativeArray <int>(itemCount, Allocator.Persistent); var rnd = new System.Random(0); for (int i = 0; i < nativeArray.Length; ++i) { nativeArray[i] = rnd.Next(0, itemCount); } NativeArrayAlgorithms.IntrospectiveSort(nativeArray, 0, nativeArray.Length); var managedArr = nativeArray.ToArray(); float x = Time.realtimeSinceStartup; Array.BinarySearch(managedArr, managedArr[searchValueIndex]); Debug.Log("Managed Binary Search: " + (Time.realtimeSinceStartup - x)); x = Time.realtimeSinceStartup; NativeArrayAlgorithms.BinarySearch(nativeArray, nativeArray[searchValueIndex]); Debug.Log("Native Binary Search: " + (Time.realtimeSinceStartup - x)); }
public void IntrospectionSort_SortsNativeArrayWith2MillionEntries() { const int itemCount = 2000000; nativeArray = new NativeArray <int>(itemCount, Allocator.Persistent); var rnd = new System.Random(0); for (int i = 0; i < nativeArray.Length; ++i) { nativeArray[i] = rnd.Next(0, itemCount); } var array = nativeArray.ToArray(); float x = Time.realtimeSinceStartup; Array.Sort(array); Debug.Log("Managed: " + (UnityEngine.Time.realtimeSinceStartup - x)); x = UnityEngine.Time.realtimeSinceStartup; NativeArrayAlgorithms.IntrospectiveSort(nativeArray, 0, nativeArray.Length); UnityEngine.Debug.Log("Native: " + (UnityEngine.Time.realtimeSinceStartup - x)); for (int i = 0; i < nativeArray.Length; ++i) { Assert.AreEqual(array[i], nativeArray[i]); } }
public void BinarySearch_ReturnsInvalidIndexForEmptyArray() { nativeArray = new NativeArray <int>(new int[0], Allocator.Temp); int index = NativeArrayAlgorithms.BinarySearch(nativeArray, 0); Assert.AreEqual(-1, index); }
public void BinarySearch_ReturnsInvalidIndexForNonExistentValue() { const int overNineK = 9001; nativeArray = new NativeArray <int>(kDefaultArraySorted, Allocator.Temp); int index = NativeArrayAlgorithms.BinarySearch(nativeArray, overNineK); Assert.AreEqual(-1, index); }
public void IntrospectionSort_SortsNativeArray() { nativeArray = new NativeArray <int>(kDefaultArray, Allocator.Temp); NativeArrayAlgorithms.IntrospectiveSort(nativeArray, 0, nativeArray.Length); for (int i = 0; i < nativeArray.Length; ++i) { Assert.AreEqual(kDefaultArraySorted[i], nativeArray[i]); } }
public void BinarySearch_WithEvenLengthArray_ReturnsIndexOfExisting() { nativeArray = new NativeArray <int>(kDefaultArraySorted, Allocator.Temp); for (int i = 0; i < kDefaultArraySorted.Length; ++i) { int index = NativeArrayAlgorithms.BinarySearch(nativeArray, kDefaultArraySorted[i]); Assert.AreEqual(kDefaultArraySorted[i], nativeArray[index]); } }
public IEnumerator BinarySearch_WithSmallSizeArray_ReturnsIndexOfExisting([Values(new int [1] { 0 }, new int [2] { 0, 1 })] int[] values) { nativeArray = new NativeArray <int>(values, Allocator.Temp); for (int i = 0; i < values.Length; ++i) { int index = NativeArrayAlgorithms.BinarySearch(nativeArray, values[i]); Assert.AreEqual(values[i], nativeArray[index]); } yield return(null); }
public void BinarySearch_WithOddLengthArray_ReturnsIndexOfExisting() { nativeArray = new NativeArray <int>(kDefaultArraySorted.Length - 1, Allocator.Temp); unsafe { fixed(int *src = kDefaultArraySorted) { UnsafeUtility.MemCpy(nativeArray.GetUnsafePtr(), src, sizeof(int) * nativeArray.Length); } } for (int i = 0; i < nativeArray.Length; ++i) { int index = NativeArrayAlgorithms.BinarySearch(nativeArray, kDefaultArraySorted[i]); Assert.AreEqual(kDefaultArraySorted[i], nativeArray[index]); } }
public IEnumerator IntrospectionSort_withMultipleSeeds_SortsNativeArrayWith500ThousandEntries([Values(-1, 0, 1)] int seed) { const int itemCount = 500000; nativeArray = new NativeArray <int>(itemCount, Allocator.Persistent); var rnd = new System.Random(seed); for (int i = 0; i < nativeArray.Length; ++i) { nativeArray[i] = rnd.Next(0, itemCount); } var array = nativeArray.ToArray(); Array.Sort(array); NativeArrayAlgorithms.IntrospectiveSort(nativeArray, 0, nativeArray.Length); for (int i = 0; i < nativeArray.Length; ++i) { Assert.AreEqual(array[i], nativeArray[i]); } yield return(null); }