Вход

Просмотр полной версии : Что быстрее match(regexp) VS ['string'].split()?!


Brook
11.09.2014, 15:22
Доброго времени суток!
Заинтересовался этим вопросом и чесно не могу получить точного ответа - написал цикл на 1000 повторений - делаю по 10 прогонов и сравниваю общее среднее значение, но результаты раз на раз очень рпротиворечивы. Если уточнять то по моему "исследованию" лидирует match() 6 к 5 но тут разница всего в одно очко (6 раз сранивал общее среднее от каждого).
В общем если есть кто то поосведомленнее - пожулуйста помогите.
Заранее спасибо.:thanks:

ksa
11.09.2014, 15:54
В общем если есть кто то поосведомленнее - пожулуйста помогите.
Вот тебе инструмент (http://javascript.ru/forum/library-toolkit-framework/17384-sravnitelnoe-testirovanie-proizvoditelnosti-javascript-koda.html)...

ksa
11.09.2014, 16:01
var str='1 2 3 4 5 6';
var a=str.match(/\d+(?=\s)/g);
Результат (больше - лучше): ≈ 543 278 выполнений/1000 мс

var str='1 2 3 4 5 6';
var a=str.split(' ');
Результат (больше - лучше): ≈ 1 850 198 выполнений/1000 мс

Т.е. split() уделал match() в этом тесте...

Pavel M.
11.09.2014, 20:05
если сделать и split c регуляркой str.split(/\s+/)
то у меня в FF split проиграл

ksa
11.09.2014, 20:19
Т.о. нужно гибче подходить к проблеме. :D
Тестировать каждый "свой" вариант и оставлять более быстрый...

Brook
11.09.2014, 22:21
Благодарю за помощь!

Brook
11.09.2014, 22:24
Т.е. split() уделал match() в этом тесте...
както не думал посмотреть на проблему с этой стороны(колличество за период)... серьезно
обязательно запомню это

BETEPAH
11.09.2014, 23:09
Ответы на подобные вопросы быстрее всего гуглить так "match vs split jsperf". Если же не найдете уже готового теста на jsperf.com, сделать там свой - дело пары минут.