В ходе доработки ООП Prototype встала необходимость определения, является ли название поля/метода зарезервированным словом или нет. Придумал три возможных алгоритма решения (точнее придумал два, а один был подсмотрен в RightJS). На вполне закономерный вопрос, какой из трёх вариантов быстрее, ответ даёт онлайн-сервис тестирования производительности JavaScript - весьма удобный инструмент для сравнения скорости выполнения разных вариантов скрипта в разных браузерах.
Собственно результат оказался любопытным: поиск слова в строке с разделителями
быстрее поиска в массиве
а тест регулярным выражением
быстрее всех.
Собственно результат оказался любопытным: поиск слова в строке с разделителями
var reserved_names_str = '|
extend|include|prototype|superclass|ancestors
|';
return !reserved_names_str.include('|' + value + '|');
быстрее поиска в массиве
var reserved_names_arr = '
extend|include|prototype|superclass|ancestors
'.split('|');
return !reserved_names_arr.include(value);
а тест регулярным выражением
var reserved_names_re = /^(?:
extend|include|prototype|superclass|ancestors
)$/;
return !reserved_names_re.test(value);
быстрее всех.
Комментариев нет:
Отправить комментарий