-
-
Save bga/480618 to your computer and use it in GitHub Desktop.
var _fn = (function() | |
{ | |
var re = /\d/; | |
return function(s) | |
{ | |
return Math.random() + re.test(s); | |
}; | |
})(); | |
var _fn2 = function(s) | |
{ | |
return Math.random() + /\d/.test(s); | |
}; | |
_speedTest( | |
[ | |
function(n) | |
{ | |
var i = n; while(i--) | |
{ | |
_fn('' + Math.random()); | |
} | |
}, | |
function(n) | |
{ | |
var i = n; while(i--) | |
{ | |
_fn2('' + Math.random()); | |
} | |
} | |
], | |
400000 | |
); | |
/* | |
ff3.6 | |
0: 3648 ms | |
1: 3598 ms | |
chrome5 | |
0: 2334 ms | |
1: 2255 ms | |
opera 10.60 | |
0: 3148 ms | |
1: 3163 ms | |
ie7 *=10 | |
0: 1142 ms | |
1: 1352 ms | |
*/ |
Да так и есть хотя суть теста тут другая. Операции с кешированым регэкспом в 2 раза быстрее чем с каждый раз создаваемым. Но мы вынужденны ресолвить регексп из скопа выше уровнем что невелирует ускорение от кеширования. И как видно в результате в современных браузерах то на то и выходит а в древних кеширование предпочтительнее. Следовательно мы получаем практическую рекомендацию все таки кешировать руками или автоматически чеерез прогон скрипта через оптимизатор (хотя такого еще не придумали). Вообще я думаю сделать не так гистами примеры оптимизации а центральным удобным ресурсом. Еще я давно хочу перевисти свою презантацию про оптимизацию на английский http://dl.dropbox.com/u/5332813/js_optimisation_rus.pdf
Клевая видимо была презентация, жаль не присутствовал на devconf
я так понимаю смысл в том, что разница во времени небольшая, потому что literal RegExp кэшится (создается один раз)?