@antimodern

Почему регулярка быстрее indexOf?

Я думал регулярки медленее. А вот тут в тесте она быстрее простого indexOf - jsben.ch/RVYk7

Это ошибка в тесте? Что стоит использовать для простого сравнения содержит строка определенное значение (не множественное, а именно фиксированное слово) все таки (скорость мега-критична, проверка в момент рендера страницы)?

upd: потестил локально, и точно быстрее...в 10 раз

indexOf: 0.190ms
test: 0.013ms
match: 0.030ms
includes: 0.027ms
search: 0.029ms
  • Вопрос задан
  • 589 просмотров
Решения вопроса 2
@Interface
Прежде всего нужно понять - действительно ли быстрее?

Есть замечательный доклад на эту тему: https://www.youtube.com/watch?v=HPFARivHJRY - очень рекомендую к просмотру.

На вскидку:
- движок может выкидывать тот или иной кусок бенчмарка
- движок может реализовывать какой-либо кэш и считать один раз

P.s. в мозиле результаты другие: победил lodash, что иронично потому что у него под капотом indexOf
Ответ написан
copist
@copist
Empower people to give
Регулярки медленнее и это даже бенчмарками проверять бесмысленно.
Это на уровне алгоритмов понятно.
Поиск в indexOf - это алгоритм простого перебора, цикл в цикле. В процессорах есть специальная низкоуровневая команда поиска вхождения подстроки. Это быстро.
Поиск в регулярках - это машина состояний, групп символов, масок, захвата подвыражений, с возможностями прямого и обратного поиска. Это прям целый зоопарк алгоритмов. Это медленно.

Скорость работы регулярных выражений заметны на бенчмарках с объёмными текстами. Ну там в HTML найти все гиперссылки. А UserAgent слишком короткая строка.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы