Avatar billede javanewbie Nybegynder
12. november 2002 - 22:36 Der er 4 kommentarer og
1 løsning

SAX parser kontra String manipulering

Jeg kom til at tænke på....

SAX parseren er en smart lille parser, der kan tage et XHTML dokument og parse, og ud fra nogle givne kriterier, skifte noget af dokumentet ud med nogle andre værdier...

Det er præcis det jeg skal, men jeg kan også sagtens lave det som noget strengmanipulering, og set ud fra et performance mæssigt synspunkt vil det måske være det smarteste, for hvis vi kigger langt nok ned i SAX-parser klasserne, er det vel præcis det den selv gør...
Avatar billede javanewbie Nybegynder
12. november 2002 - 22:45 #1
Lige et eksempel... Istedet for at smide dokumentet igennem SAX, laver jeg istedet noget i stil med...

String detDerSkalUdskiftes = "slabbe-dubbe-dælle";
String detDerSkalIndsættes = "ogger-gokker-motherfucker";
String dokumentDerSkalReturneres = "";
int index = 0;
while (index > 0) {
    int index = document.location(detDerSkalUdskiftes, index);
    if (index > 0) {
        dokumentDerSkalReturneres = dokumentDerSkalReturneres + document.substring(index,detDerSkalUdskiftes.length) + detDerSkalIndsættes;
        index = index + detDerSkalUdskiftes.length;
    }
    dokumentDerSkalReturneres = dokumentDerSkalReturneres + document.substring(index);
}
return dokumentDerSkalReturneres;


Vil det ikke performe ligeså fornuftigt som en SAX parser?
Avatar billede arne_v Ekspert
12. november 2002 - 22:50 #2
Hvis du kun skal labe en simpel tekst replace, så
bør et lille special program være hurtigere end
en SAX parser.
Avatar billede arne_v Ekspert
12. november 2002 - 22:51 #3
Hvis du er meget interessert i performance bør du lave
dokumentDerSkalReturneres til en StringBuffer i.s.f.
en String.
Avatar billede javanewbie Nybegynder
13. november 2002 - 09:52 #4
Ok. Takker. Kan du også lige give en kort forklaring på hvorfor StringBuffer performer bedre end String? :-)
Avatar billede arne_v Ekspert
13. november 2002 - 10:15 #5
Ja.

Når du bruger String og +, så laver du hele tiden
nye String objekter.

Når du bruger StringBuffer og dens append metode,
så bruger du det samme objekt hele tiden.

Meget mere effektivt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester