Показать сообщение отдельно
  #18  
Старый 27.03.2014, 18:43
Аватар для seeman_tm
seeman_tm seeman_tm вне форума
Новичок
 
Регистрация: 03.02.2011
Сообщения: 79
Репутация: -2306
По умолчанию

Вот результат тестирования трех функций.
Цитата:
Тест первый
Массив: 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, то она мало того, что мягко говоря грешит, так и в скорости отстаёт от своих конкурентов прилично.
Ответить с цитированием