[Java] StringBuffer reset?

Pagina: 1
Acties:

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
simpel vraagje maar ik zie geen oplossing:

Java:
1
2
3
4
5
6
7
8
StringBuffer tQuery;

for (int tRow=0; tRow<100000; tRow++)
{
   tQuery = new StringBuffer(10000);
   //do some heavy appending.... here
   
}


vraag is simpel: ik doe heel veel appending (cascading delete/update generation) per row. Dus het gebruik van een StringBuffer moet wel. Maar nu moet ik dat process dus een paar duizend keer doen wat dus steeds een 'new' is - ik neem aan dat Java dat ook echt doet terwijl ie ondertussen de oude objecten cleared.

Is er soms een manier om snel de buffer te resetten maar (maw zeggen dat hij terug 'leeg' is). er is wel delete maar deze gaat dus ook letterlijk copieren. ik zoek dus een soort 'fseek(0)'...

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Heb je de implementatie van delete al bekeken? Denk je echt dat die zo inefficient is als je de hele inhoud verwijdert?

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

setLength(int newLength)
Sets the length of this String buffer.
=>

tQuery.setLength(0);

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
thx: setLength(0) is the reset...

mBravenboer: ook jij hebt gelijk (WEER die source van JDK moeten unpacken :) en die copiert idd 0. (als je de juiste delete(0, sb.length()+1)) doet. setLength is net iets sneller aangezien ie zowieso niets copiert (tenzij synchronised)..

thx both