-
-
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 кэшится (создается один раз)?