Вот результат тестирования трех функций.
Цитата:
Тест первый
Массив: 0D, 0A
Подмассив: 0D, 0A, 0D, 0A
Функция lArrayPos
Результат функции: -1
Среднее время выполнение функции: 0,00163093354043601 ms.
Количество вызовов функции: 1000
Функция ArrFind
Результат функции: -1
Среднее время выполнение функции: 0,00187481928569134 ms.
Количество вызовов функции: 1000
Функция SubArrPos
Результат функции: 0 (Функция возвращает не верный результат)
Среднее время выполнение функции: 0,00163847639853669 ms.
Количество вызовов функции: 1000
Тест второй
Массив: 0D, 0A, 0D, 0A
Подмассив: 0D, 0A, 0D, 0A
Функция lArrayPos
Результат функции: 0
Среднее время выполнение функции: 0,00164071131945541 ms.
Количество вызовов функции: 1000
Функция ArrFind
Результат функции: 0
Среднее время выполнение функции: 0,00189521293907466 ms.
Количество вызовов функции: 1000
Функция SubArrPos
Результат функции: 0
Среднее время выполнение функции: 0,001623949412565 ms.
Количество вызовов функции: 1000
Тест третий
Массив: 75, 73, 65, 72, 6E, 61, 6D, 65, 3D, 75, 73, 65, 72, 5F, 6E, 61, 6D, 65, 26, 70, 61, 73, 73, 77, 6F, 72, 64, 3D, 70, 61, 73, 73, 77, 6F, 72, 64, 0D, 0A, 30, 0D, 0A, 0D, 0A, 0D, 0A
Подмассив: 0D, 0A, 0D, 0A
Функция lArrayPos
Результат функции: 39
Среднее время выполнение функции: 0,00173793037941973 ms.
Количество вызовов функции: 1000
Функция ArrFind
Результат функции: 39
Среднее время выполнение функции: 0,00201282565242231 ms.
Количество вызовов функции: 1000
Функция SubArrPos
Результат функции: 40 (Функция возвращает не верный результат)
Среднее время выполнение функции: 0,00195667326433946 ms.
Количество вызовов функции: 1000
Тест четвёртый
Массив: 0D, 0A, 0D, 0B, ..., 0B, 0D, 0A,0D,0A (Длинна массива 4000 элементов)
Подмассив: 0D, 0A, 0D, 0A
Функция lArrayPos
Результат функции: 3996
Среднее время выполнение функции: 0,0157112146934876 ms.
Количество вызовов функции: 1000
Функция ArrFind
Результат функции: 3996
Среднее время выполнение функции: 0,00864160109734617 ms.
Количество вызовов функции: 1000
Функция SubArrPos
Результат функции: 0 (Функция возвращает не верный результат)
Среднее время выполнение функции: 0,0489961713011011 ms.
Количество вызовов функции: 1000
|
Из тестов видно, что хоть функция ArrFind и уступает на малых объёмах массива в котором производится поиск из-за выполнения предварительных операций по формированию таблицы, но на больших объёмах она берёт безоговорочное первенство. Единственное что её пришлось допилить, это проверку на длину массива и подмассива (т.к. если функции передать любой из массивов длиной равной нулю, то происходит ошибка). И в случае если подмассив отсутствует в массиве, то возвращать результат -1.
Что касается функции SubArrPos, то она мало того, что мягко говоря грешит, так и в скорости отстаёт от своих конкурентов прилично.
|