25 авг. 2011 г.

Проверка слова на попадание в список зарезервированных идентификаторов

В ходе доработки ООП 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);

быстрее всех.

Комментариев нет:

Отправить комментарий