Skip to content

Instantly share code, notes, and snippets.

@bga
Created July 18, 2010 18:54
Show Gist options
  • Save bga/480618 to your computer and use it in GitHub Desktop.
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
*/
@itrelease
Copy link

я так понимаю смысл в том, что разница во времени небольшая, потому что literal RegExp кэшится (создается один раз)?

@bga
Copy link
Author

bga commented Jul 21, 2010

Да так и есть хотя суть теста тут другая. Операции с кешированым регэкспом в 2 раза быстрее чем с каждый раз создаваемым. Но мы вынужденны ресолвить регексп из скопа выше уровнем что невелирует ускорение от кеширования. И как видно в результате в современных браузерах то на то и выходит а в древних кеширование предпочтительнее. Следовательно мы получаем практическую рекомендацию все таки кешировать руками или автоматически чеерез прогон скрипта через оптимизатор (хотя такого еще не придумали). Вообще я думаю сделать не так гистами примеры оптимизации а центральным удобным ресурсом. Еще я давно хочу перевисти свою презантацию про оптимизацию на английский http://dl.dropbox.com/u/5332813/js_optimisation_rus.pdf

@itrelease
Copy link

Клевая видимо была презентация, жаль не присутствовал на devconf

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment