/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
[VB6] String builder + skrivning til fil
Fra : Jesper Stocholm


Dato : 24-03-03 16:20

To spørgsmål til VB-gutterne:

1.
i .Net findes der en StringBuilder-klasse, der optimerer
streng-sammensætning. Findes der noget tilsvarende indbygget i VB ?
Jeg har fundet [1], der skulle gøre det ... men er det den eneste
måde at gøre det på ?

2.
Jeg skal skrive en masse linier til en (CSV)fil, men jeg er i tvivl om,
hvad der er den mest optimale måde. Er det at skrive til filen linie for
linie eller er det mere optimalt at smide al teksten ind i filen på én
gang ?

pft,



[1] http://www.vbaccelerator.com/home/VB/Code/Techniques/StringBuilder/article.asp

--
Jesper Stocholm - http://stocholm.dk
** Vil det sige, at ham Lars er et stort brød på 15 år ? **
Svar venligst til gruppen og ikke til mig privat !
Skriv under det du svarer på - www.usenet.dk/netikette/citatteknik.html

 
 
Krabsen (24-03-2003)
Kommentar
Fra : Krabsen


Dato : 24-03-03 16:31


"Jesper Stocholm"
<skal.du.absolut.vise.min.emailadresse.ved.svar@stocholm.invalid> skrev i en
meddelelse news:Xns9348A6203B964spamstocholmdk@130.226.1.34...
> To spørgsmål til VB-gutterne:
>
> 2.
> Jeg skal skrive en masse linier til en (CSV)fil, men jeg er i tvivl om,
> hvad der er den mest optimale måde. Er det at skrive til filen linie for
> linie eller er det mere optimalt at smide al teksten ind i filen på én
> gang ?
>

Tja, jeg plejer at gøre det linie for linie. Det er det mest overskuelige at
indbygge i de(t) loop, der typisk danner en linie ad gangen ud fra et
gennemløb af et recordset i en eller anden form.

Så undgår du også at løbe ind i, at din string-variabel løber tør for rum..

Og med mindre du har en _meget_ langsom harddisk, må hastighedsforskellen
være minimal.

mvh

Krabsen



Tomas Christiansen (24-03-2003)
Kommentar
Fra : Tomas Christiansen


Dato : 24-03-03 23:05

Krabsen skrev:
> Tja, jeg plejer at gøre det linie for linie. Det er det mest
overskuelige at
> indbygge i de(t) loop, der typisk danner en linie ad gangen ud fra et
> gennemløb af et recordset i en eller anden form.

Ja, det er klart det letteste.

> Og med mindre du har en _meget_ langsom harddisk, må
hastighedsforskellen
> være minimal.

Nej. Selvom man har en meget hurtig harddisk, vil man med store
datamængder kunne opnå en _betydelig_ performanceforbedring ved at
skrive alle data ud i filen én stor blok.
Jeg vil forvente at det kører 10 gange hurtigere (uden at have konkrete
performance-data lige ved hånden).

Det næste spørgsmål er så om det er besværet værd. De fleste computere i
dag er så hurtige, at det ikke er besværet værd, at bruge mange ekstra
timer på at optimere.

-------
Tomas


Krabsen (25-03-2003)
Kommentar
Fra : Krabsen


Dato : 25-03-03 09:00


"Tomas Christiansen" <toc-nospam-01@blikroer.dk> skrev i en meddelelse
news:b5nvai$7p8$1@news.cybercity.dk...
> Krabsen skrev:
> > Tja, jeg plejer at gøre det linie for linie. Det er det mest
overskuelige at
> > indbygge i de(t) loop, der typisk danner en linie ad gangen ud fra et
> > gennemløb af et recordset i en eller anden form.
>
> Ja, det er klart det letteste.
>
> > Og med mindre du har en _meget_ langsom harddisk, må
hastighedsforskellen være minimal.
>
> Nej. Selvom man har en meget hurtig harddisk, vil man med store
> datamængder kunne opnå en _betydelig_ performanceforbedring ved at
> skrive alle data ud i filen én stor blok.
> Jeg vil forvente at det kører 10 gange hurtigere (uden at have konkrete
> performance-data lige ved hånden).
>
> Det næste spørgsmål er så om det er besværet værd. De fleste computere i
> dag er så hurtige, at det ikke er besværet værd, at bruge mange ekstra
timer på at optimere.

...hvilket osse var det, der ligger til grund for min vurdering af
hastigheden. Det kan godt være, at en skrivning tager et splitsekund mere
eller mindre, men set fra brugeren kan hastighedsforskellen måske ikke ses


Og som du skriver - sammenholdt med besværet med at holde hus med
data-blokken.

mvh
Krabsen




Tomas Christiansen (25-03-2003)
Kommentar
Fra : Tomas Christiansen


Dato : 25-03-03 09:07

Krabsen skrev:
> Det kan godt være, at en skrivning tager et splitsekund mere
> eller mindre, men set fra brugeren kan hastighedsforskellen måske ikke
ses

Tja... det afhænger helt af datamængden.

Hvis det tager 3 henholdsvis 30 sekunder vil brugeren formentlig nok
mærke forskellen!

-------
Tomas


preben nielsen (27-03-2003)
Kommentar
Fra : preben nielsen


Dato : 27-03-03 18:06


"Jesper Stocholm"
<skal.du.absolut.vise.min.emailadresse.ved.svar@stocholm.invalid>
skrev i en meddelelse
news:Xns9348A6203B964spamstocholmdk@130.226.1.34...
> To spørgsmål til VB-gutterne:
>
> 1.
> i .Net findes der en StringBuilder-klasse, der optimerer
> streng-sammensætning. Findes der noget tilsvarende indbygget i
VB ?
> Jeg har fundet [1], der skulle gøre det ... men er det den
eneste
> måde at gøre det på ?

Jeg har lavet en tilsvarende klasse. Hvad er dit problem med den
fundne kode ?


> 2.
> Jeg skal skrive en masse linier til en (CSV)fil, men jeg er i
tvivl om,
> hvad der er den mest optimale måde. Er det at skrive til filen
linie for
> linie eller er det mere optimalt at smide al teksten ind i filen
på én
> gang ?

Jeg vil sige "prøv det". Hvis det er for langsomt, så prøv at
opbygge din string og skriv den i eet hug. Det skulle undre mig om
ikke der er en del buffering indbygget i VB skrive-kommandoer.

Jeg skriver nogle gange filer på ca. 10 mb linie for linie (ca.
85.000 linier) og selvom sagtens kan optimeres, så tager det altså
ikke mange sekunder.

Den nødvendige indsats afhænger af dit behov.

--
/\ preben nielsen
\/\ prel@post.tele.dk




Jesper Stocholm (28-03-2003)
Kommentar
Fra : Jesper Stocholm


Dato : 28-03-03 11:16

preben nielsen wrote :

>
> "Jesper Stocholm"
> <skal.du.absolut.vise.min.emailadresse.ved.svar@stocholm.invalid>
> skrev i en meddelelse
> news:Xns9348A6203B964spamstocholmdk@130.226.1.34...
>> To spørgsmål til VB-gutterne:
>>
>> 1.
>> i .Net findes der en StringBuilder-klasse, der optimerer
>> streng-sammensætning. Findes der noget tilsvarende indbygget i
>> VB ?
>> Jeg har fundet [1], der skulle gøre det ... men er det den
>> eneste måde at gøre det på ?
>
> Jeg har lavet en tilsvarende klasse. Hvad er dit problem med den
> fundne kode ?

der er sådan set ikke noget problem med koden. Jeg tøvede blot lidt med at
bruge den, da applikationen skal bruges internt i en commerciel virksomhed.
Derfor ville jeg lige sikre mig at

1.
Der ikke er nogle rettighedsmæssige ulember forbundet med at bruge den

2.
Der ikke var nogle indbyggede rutiner i vb jeg havde overset, som jeg kunne
bruge i stedet.

> Jeg skriver nogle gange filer på ca. 10 mb linie for linie (ca.
> 85.000 linier) og selvom sagtens kan optimeres, så tager det altså
> ikke mange sekunder.

Jeg skulle oprindeligt bruge den til at skrive en masse linier til en CSV-
fil, hvor jeg i starten sammensatte hele filens indhold i en enkelt streng.
Jeg er dog siden gået over til at skrive en linie ad gangen til filen, og
jeg har derfor ikke længere brug for lige præcist dette længere.

Jeg forventer i øvrigt at konvertere dele af denne applikation til .Net
(mest som et proof-of-concept), så der har jeg jo adgang til netop
StringBuilder-klassen, der i givet fald vil kunne gøre det for mig.

Tak for dit svar,



--
Jesper Stocholm - http://stocholm.dk
www.asp-faq.dk : FAQ for dk.edb.internet.webdesign.serverside.asp
www.usenet.dk/netikette/citatteknik.html : Skriv under det du svarer på
Svar til gruppen og ikke til mig privat !

Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408518
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste