Не верь, не бойся, не проси - [entries|archive|friends|userinfo]
phantom

[ website | My Website ]
[ userinfo | ljr userinfo ]
[ archive | journal archive ]

[Mar. 24th, 2008|07:54 am]
Previous Entry Add to Memories Tell A Friend Next Entry
LinkLeave a comment

Comments:
[User Picture]
From:[info]ketmar
Date:March 25th, 2008 - 02:31 am
(Link)
>разбор строк вручную всегда должен быть быстрей.
э, нет. зависит от реализации строк. в JS они immutable, поэтому, например, charAt() каждый раз создаёт новый объект «строка» из одного символа (как понимаешь, операция не шибко шустрая). так что регулярки могут быть шустрее в разы — у меня один replace. правда, я тоже со строкой манипулирую. лень бенчмарк писать. %-)

>я просто JS не знаю, и чтобы не использовать
>высокоуровневых функций, сделал по-быстрому:

не, я не настолько тупой, %-) я написал криво. надо было написать: «мне лом было разбираться в твоём коде». %-)

зыж гы. таки мой способ медленней. убрал одну регулярку — стал шустрей. переписал без регулярок, с двумя словарями — стало ОХЕРЕННО шустрей. тестировал на spidermonkey, для Оперы не проверял. %-)

твой:
16.67s user 0.49s system 82% cpu 20.781 total
мой:
19.83s user 0.34s system 85% cpu 23.565 total
мой без одной регулярки:
14.19s user 0.25s system 85% cpu 16.848 total
мой без регулярок, с двумя словарями:
js test_$num.js 4.10s user 0.08s system 83% cpu 5.013 total
гы. %-)

невозбранно проапдейтил jsunfold.
From:[info]phantom
Date:March 25th, 2008 - 02:54 am
(Link)
так у меня неоптимизированно было.
неважно что строки иммутабельны,
аллокаторы обычно шустро работают.

вот от реализации регулярных выражений
и будет зависеть скорость их работы:
чтобы они действительно быстро работали
они должны быть компилируемыми, а JS,
как известно, интерпретатор, и всегда
регулярные выражения будут медленнее,
чем эквивалентный им строковый парсинг.
[User Picture]
From:[info]ketmar
Date:March 25th, 2008 - 03:04 am
(Link)
>так у меня неоптимизированно было.
да это понятно. %-)

>чтобы они действительно быстро работали
>они должны быть компилируемыми

а фиг знает, что он там в кишках делает — лень исходник читать. я ему позволял сделать прекомпиляцию — я создавал регулярку один раз, а не при каждом вызове test/match/replace.

>всегда
>регулярные выражения будут медленнее,
>чем эквивалентный им строковый парсинг.

неа. %-) в Lua бывает наоборот, особенно на шибко больших строках.
[User Picture]
From:[info]ppkk
Date:March 25th, 2008 - 02:17 pm
(Link)
Значит там плохая библиотека регулярных выражений используется, либо очень неэффективно. Странно.
[User Picture]
From:[info]ketmar
Date:March 25th, 2008 - 02:24 pm
(Link)
да и хер бы с ней. spidermonkey никогда особой скоростью не отличался, не зря они tamarin пилят. к сожалению, консольную версию оперного движка не дают, нормально протестить сложно.