powolny string tokenizer
gosc - 16-02-2006 10:06
powolny string tokenizer
Czesc, mam taki problem - parsuje stringi, konkretnie musze wydobywac z nich poszczegolne wyrazy. Zdan jest okolo 5000, kazde ma kilka wyrazow. Niestety nie robie tego na PC, tylko troszke gorszym sprzecie i trwa to okolo 40 sekund (zbudowanie kolekcji zawierajacej wszystkie wyrazy).
Profiler pokazuje, ze najwiecej czasu zajmuje wlasnie parsowanie StringTokenizerem.
Znacie jakies metody zeby to przyspieszyc ?
Z gory dzieki. AT.
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Raveman - 16-02-2006 10:06
StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.
"gosc" <andrzejtWYTNIJTO@vp.pl> wrote in message news:114a.000000d5.43f31056@newsgate.onet.pl... > Czesc, > mam taki problem - parsuje stringi, konkretnie musze wydobywac z nich > poszczegolne wyrazy. Zdan jest okolo 5000, kazde ma kilka wyrazow. > Niestety nie > robie tego na PC, tylko troszke gorszym sprzecie i trwa to okolo 40 sekund > (zbudowanie kolekcji zawierajacej wszystkie wyrazy). > > Profiler pokazuje, ze najwiecej czasu zajmuje wlasnie parsowanie > StringTokenizerem. > > > Znacie jakies metody zeby to przyspieszyc ?
Grzegorz Mucha - 16-02-2006 10:06
On Wed, 15 Feb 2006 12:37:26 +0100, Raveman wrote:
> StringTokenizer is a legacy class that is retained for compatibility reasons > although its use is discouraged in new code. It is recommended that anyone > seeking this functionality use the split method of String or the > java.util.regex package instead.
Taaa... to ja teraz powiem, że przeglądałem kawałek kodu pod profilerem i jednak tokenizer jest szybszy od String.split() na przykład.
Wersja hardkorowa to być może iterowanie znak po znaku (lub za pomocą indexOf()) i wyciąganie substringów - ale nie wiem, czy to akurat będzie dużo szybsz.
mucher
Sadu - 16-02-2006 10:06
Jak czytasz to z pliku moze StreamTokenizer pomoze...
Użytkownik "gosc" <andrzejtWYTNIJTO@vp.pl> napisał w wiadomości news:114a.000000d5.43f31056@newsgate.onet.pl... > > Znacie jakies metody zeby to przyspieszyc ? >
kepasaparado@o2.pl - 16-02-2006 10:06
> Czesc, > mam taki problem - parsuje stringi, konkretnie musze wydobywac z nich > poszczegolne wyrazy. Zdan jest okolo 5000, kazde ma kilka wyrazow. Niestety nie > robie tego na PC, tylko troszke gorszym sprzecie i trwa to okolo 40 sekund > (zbudowanie kolekcji zawierajacej wszystkie wyrazy). > > Profiler pokazuje, ze najwiecej czasu zajmuje wlasnie parsowanie StringTokenizerem. > > > Znacie jakies metody zeby to przyspieszyc ? > > > Z gory dzieki. > AT.
Przerabiałem duże pliki StringTokenizerem ale takich opoznien nie zauwazylem. Moze to jest kwestia kodu ktory obsluguje to rozdzielanie - po pierwsze zmienne tymczasowe String - trzeba je wyeliminować , dalej uzyj StringBuffer do ktorego wczytasz plik , powinno pomoc.
Pozdrawiam Sławek Stec
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Jakub Grabowski - 16-02-2006 10:06
Grzegorz Mucha napisał(a): > Taaa... to ja teraz powiem, że przeglądałem kawałek kodu pod profilerem i > jednak tokenizer jest szybszy od String.split() na przykład.
Wydaje mi się, że String.split() za każdym razem kompiluje wyrażenie regularne, którego używa do dzielenia i to może być problem. Alternatywnie można sobie skompilować i zapisać gdzieś Pattern (np. Pattern splitter = Pattern.compile("\\s")), który będzie reużywany i nie trzeba będzie go kompilować za każdym razem. Używa się wtedy tego patterna do dzielenia Stringa lub StringBuffera. Szczegóły w JavaDocu.
-- Pozdrawiam, Jakub Grabowski.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[postgresql] kilka =?ISO-8859-2?Q?rekord=F3w_subquery_jako_?==?ISO-8859-2?Q?string?=
String line; if (line=="cos"){...}....problem
[Oracle] =?ISO-8859-2?Q?=A3=B1czenie_wierszy_z_zapytania_?==?ISO-8859-2?Q?w_jeden_string?=
Variable type (position <number>) in EXECUTE STATEMENT '<string>' INTO does not match returned column type
Problem z funkcja mysql_real_escape_string() na bazie mysql
[psql] Funkcja =?ISO-8859-2?Q?=B3=B1cz=B1ca_stringi?=
Sql Serv 2000 - String z lista parametrem funkcji ?
[pl/sql] usuwanie znaku nowej lini ze stringa
Firebird 1.5, Invalid argument in EXECUTION STATEMENT - cannot convert to string
[oracle] jak wyciągnąć jeden znak ze stringa/zmiennej?
zanotowane.pldoc.pisz.plpdf.pisz.plabsolwenci.keep.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|