Я почему то всё время считал, что функции isset и array_key_exists должны работать с одинаковой скоростью. Ну просто исходя из принципа работы хеш-массивов.
В статье пишут, что array_key_exists для того, чтобы найти ключ, пробегается по всему списку ключей. Но всё куда интереснее.
Однако же нет.
В статье пишут, что array_key_exists для того, чтобы найти ключ, пробегается по всему списку ключей. Но всё куда интереснее.
Написал простейший тестик: http://pastebin.com/kQyPHFnP
----------------------
@cycles: 1000000
@length: 1000
@tries: 5
preparing array with 1000 elements ... OK
array_key_exists: 0.9951 second(s)
isset: 0.2721 second(s)
----------------------
@cycles: 1000000
@length: 10000
@tries: 5
preparing array with 10000 elements ... OK
array_key_exists: 0.9989 second(s)
isset: 0.2716 second(s)
----------------------
@cycles: 1000000
@length: 100000
@tries: 5
preparing array with 100000 elements ... OK
array_key_exists: 0.9891 second(s)
isset: 0.2716 second(s)
----------------------
@cycles: 1000000
@length: 1000000
@tries: 5
preparing array with 1000000 elements ... OK
array_key_exists: 1.0031 second(s)
isset: 0.2716 second(s)
----------------------
Результаты интересны тем, что
- array_key_exists работает приблизительно в 3.7 раза медленнее isset
- количество элементов в массиве на время работы этих функций не влияет.
No comments:
Post a Comment