Производительность Javascript :Почему перебор массива и проверка каждого значения быстрее, чем indexOf, поиск и сопоставление?

Это стало для меня огромным сюрпризом, и я хотел бы понять этот результат. Я сделал тест в jsperf , который в основном должен принимать строку (, которая является частью URL-адреса, который я хотел бы проверить ), и проверяет наличие 4 элементов (которые на самом деле присутствуют в строке ).

Проверяется 5 способами:

  1. простой индекс;
  2. Разделите строку, затем indexOf;
  3. поиск по регулярным выражениям;
  4. соответствие регулярному выражению;
  5. Разделите строку, выполните цикл по массиву элементов, а затем проверьте, соответствует ли какой-либо из них тому, чему он должен соответствовать

К моему огромному удивлению, номер 5 оказался самым быстрым в Chrome 21 . Это то, что я не могу объяснить.

В Firefox 14 простой indexOf является самым быстрым, насколько я могу поверить.

16
задан João Pinto Jerónimo 2 August 2012 в 09:10
поделиться