| |
[Mar. 24th, 2008|07:54 am] |
|
|
|
|
| Comments: |
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | | From: | 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.
так у меня неоптимизированно было. неважно что строки иммутабельны, аллокаторы обычно шустро работают.
вот от реализации регулярных выражений и будет зависеть скорость их работы: чтобы они действительно быстро работали они должны быть компилируемыми, а JS, как известно, интерпретатор, и всегда регулярные выражения будут медленнее, чем эквивалентный им строковый парсинг.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | | From: | ketmar |
| Date: | March 25th, 2008 - 03:04 am |
|---|
| | | (Link) |
|
>так у меня неоптимизированно было. да это понятно. %-)
>чтобы они действительно быстро работали >они должны быть компилируемыми а фиг знает, что он там в кишках делает — лень исходник читать. я ему позволял сделать прекомпиляцию — я создавал регулярку один раз, а не при каждом вызове test/match/replace.
>всегда >регулярные выражения будут медленнее, >чем эквивалентный им строковый парсинг. неа. %-) в Lua бывает наоборот, особенно на шибко больших строках.
![[User Picture]](http://lj.rossia.org/userpic/42280/9559) | | From: | ppkk |
| Date: | March 25th, 2008 - 02:17 pm |
|---|
| | | (Link) |
|
Значит там плохая библиотека регулярных выражений используется, либо очень неэффективно. Странно.
![[User Picture]](http://lj.rossia.org/userpic/197531/22349) | | From: | ketmar |
| Date: | March 25th, 2008 - 02:24 pm |
|---|
| | | (Link) |
|
да и хер бы с ней. spidermonkey никогда особой скоростью не отличался, не зря они tamarin пилят. к сожалению, консольную версию оперного движка не дают, нормально протестить сложно. | |