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 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 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]); } }