Skip to content

Instantly share code, notes, and snippets.

@bga
Created July 18, 2010 18:54
Show Gist options
  • Select an option

  • Save bga/480618 to your computer and use it in GitHub Desktop.

Select an option

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
Copy Markdown

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

@bga
Copy link
Copy Markdown
Author

bga commented Jul 21, 2010

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

@itrelease
Copy link
Copy Markdown

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

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