Avatar billede delphidaner Nybegynder
29. november 2000 - 09:31 Der er 11 kommentarer og
2 løsninger

Assign/Reset/Rewrite vs. TFileStream

Nu har jeg diskuteret det et par gange i andre spørgsmål på Eksperten, så nu har jeg lavet et spørgsmål om det til at skabe lidt debat: Hvad er bedst?
Avatar billede borrisholt Novice
29. november 2000 - 09:35 #1
delphidaner> for at vi kan få afgjort hvad der er hurtigst, skal vil have en opgave der skla løsses ...

Jeg foreslår du udstikker en opgave, og så kan vi jo teste hvilken metode der er hurtigst ....

Jens B
Avatar billede pellelil Nybegynder
29. november 2000 - 10:08 #2
Taler vi om at læse eller skrive? (eller begge dele?). En mulighed kunne jo være at oprette en (garbage) fil på 256-512 MB (så er der vist ikke nogen der har \"ram nok\") lukke den og åbne den igen for at læse den !?
Avatar billede delphidaner Nybegynder
29. november 2000 - 15:02 #3
Jeg tænker på generelt brug af metoderne - deriblandt læse og skrive store og små filer, osv.

Jeg synes der er mange der mener, at det er hurtigt. Jeg har aldrig haft andet en bøvl med det, da det var utrolig langsomt. 1 KB kunne tage et par sekunder, og jeg tør ikke tænke på hvad 1 MB kunne tage. Det gælder i øvrigt både Delphi go Turbo Pascal.

I øjeblikket bruger jeg altid file streams til Windows (i Delphi), og DOS interrupts til DOS (i Turbo Pascal).
Avatar billede pellelil Nybegynder
29. november 2000 - 15:57 #4
delphidaner> \"et par sekunder\" er du sikker på at det ikke er floppy drevet du bruger  :-)
Avatar billede delphidaner Nybegynder
30. november 2000 - 07:43 #5
Jeps, det var HD\'en. Jeg har heller aldrig kunnet forstå, hvorfor det skulle være så langsomt.
Avatar billede pellelil Nybegynder
30. november 2000 - 08:58 #6
>delphidaner: Hvad adresse skal jeg maile mit test program til ?
Avatar billede delphidaner Nybegynder
30. november 2000 - 09:30 #7
Du kan maile til spiderboy_jr@hotmail.com. Så prøver jeg lige at checke det.
Avatar billede pellelil Nybegynder
30. november 2000 - 12:09 #8
delphidaner> I så fald du ikke har bemærket det, så har jeg sendt et eksempel til din hotmail adresse !
Avatar billede delphidaner Nybegynder
30. november 2000 - 16:09 #9
Jeg skulle lige hjem fra skole først, inden jeg kunne checke det, du sendte til mig.

Jeg vil give dig ret i at metoden du benyttede var meget hurtigere end det jeg engang brugte, men jeg har ikke lige sammenlignet det med file streams endnu.

Jeg tror grunden til det, er du brugte blockread/write. Jeg har (næsten) altid kun brugt read/write. Har det noget at sige?

Hvordan kan det være at harddisken \'skratter\' mere med file streams end ved Assign/Reset/Rewrite? Bruger den mere hukommelse/CPU-ressourcer, e.l?

Hvad er mest korrekt at bruge vedrørende Win32 programmering?
Avatar billede borrisholt Novice
30. november 2000 - 16:13 #10
Hvis du vil kode Windows 32 så ska du bruge
ReadFile, ReadFileEx og tilsvarende for at skrive. De ligger direkte i kernen.

Blockread etc. er skrevet af Borland i Assebmler ...

Jens B
Avatar billede pellelil Nybegynder
30. november 2000 - 16:37 #11
En af fordelene ved BlockRead/BlockWrite (i forhold til Read/Write) er at du kan bestemme størrelsen på det du læser/skriver. I mit eksempel læser/skriver jeg fra 8 - 32 Kb ad gangen og dette er væsentligt hurtigere end at læse/skrive nogle få bytes ad gangen. Jeg har ikke rodet med Borrisholt\'s forslag men dette burde være hurtigere endnu !?
Avatar billede delphidaner Nybegynder
01. december 2000 - 07:56 #12
OK, nu er jeg ved at have en indsigt i metoden. Pellelil, hvis du lige svarer, så kan du og Borrisholt dele pointene, vægtet efter deltagelse i debatten og bidrag af facts.
Avatar billede pellelil Nybegynder
01. december 2000 - 08:59 #13
Svar :-)
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