[Java lista] Pattern.compile bug (jdk 1.5)
Andras Dobrosi
andris at freemail.hu
2008. Már. 4., K, 15:16:08 CET
Bocs. Utana olvasva latom, hogy minidg is nativ volt a regex.
Akkor ez kilove.
Andris
> Nem lehet, hogy az 1.6-os azert gyorsabb, mert kiszerveztek nativba
> ezt a regexpesdit? Akinek van kedve bujjon bele a forrasba :), mert
> kicsit engem is erdekel az alapproblema.
>
> Andris
>
> 2008/3/3 Marai Laszlo <lists at atleta.hu>:
>
>
> > On Fri, 29 Feb 2008 09:25:22 +0100 (CET)
> > OSTYÁNI Péter <panteros at dev-labs.com> wrote:
> >
> > Hali!
> >
> >
> >
> > > > Talalkoztatok ti olyannal, hogy egy hosszu regexnel a Pattern.compile
> > > > iszonyatosan lelassul? Nalam egy olyan 6-700 karakter hosszu regexnel
> > > > lesz kivarhatatlan (1-2 percnel tobbet nem volt turelmem varni).
> >
> > > Azért én nem merném rögtön azt állítani, hogy ez bug.
> > > Nem tudom mi lehet a különbség a regex feldolgozásban a két
> >
> > Hat en sem allitanam, hogy bug, ha az 1.6-ban nem mukodne jol.
> >
> >
> > > jdk között, de nekem egy 6-700 karakteres regexp eleve
> > > abnormálisnak tűnik.
> >
> > 36 db vesszovel elvalasztott egesz szam (marmint a peldaban, ami
> > megfekszik), ebbol egy mezot 15 karakter ir le + a vesszo. Szerintem ez
> > annyira nem durva.
> >
> >
> > > Én megpróbálnám azért átszervezni valahogy.
> > > Csináltam már érdekes dolgokat regexppel, de többszáz
> > > karakteres mintát soha nem próbáltam összefűzni, valószínűleg
> > > nekem ezért nem tűnt fel a sebességkülönbség.
> > > Azért arra is kíváncsi lennék, hogy egy ilyen bonyolult
> > > feldolgozáshoz mennnyi erőforrás szükségeltetik.
> >
> > Semmi kulonos. 1.6-tal pikk-pakk mukodik a 2GHz koruli asztali gepemen.
> > Fel sem tunt a problema, amig meg nem probaltam 1.5-on.
> >
> > Meregettem egy kicsit a fenti peldaval, es ugy tunik, mintha sikerult
> > volna egy 2^n futasideju algoritmust belerakni az 1.5-os jdkba. A
> > ([+\\-]?[0-9]+)?, patternt 20-nal tobbszor egymas melle pakolva (21, 22,
> > 23) szepen mindig 2x-esere no a Pattern.compile futasideje (25x veve
> > 2.5 sec, 28x veve 10 sec). Az 1.6-tal gyonyoruen megy akar 10000
> > ismetlessel is (165 ms!!!), csak a stack meretet kell jo nagyra
> > (10M) felhuzni, mert rekurziv az algoritmus.
> >
> > A feladat egyebkent nem bonyolult, lenyegeben CSV adatot kell elemeire
> > bontani, ahol az egyes mezok kulonbozo tipusuak lehetnek (String, egesz,
> > lebegopontos, datum, stb.)
> >
> > Persze meg lehet oldani ugy is, ciklusban vegigbohockodik az ember a
> > Matcher.find( int ) metodussal, de azert nekem ugy egybe jobban tetszett
> > volna :).
> >
> > atleta
> >
> >
> > _______________________________________________
> > Javalist mailing list
> > Javalist at javagrund.hu
> > http://javagrund.hu/mailman/listinfo/javalist
> >
>
További információk a(z) Javalist levelezőlistáról