04. juli 2007 - 01:17Der er
6 kommentarer og 1 løsning
Beregning af kbps
Jeg sender en fil med FTP og skal derefter beregne hvor hurtig det gik (kbps), jeg syntes mit resultat er lidt for lavt i forhold til hvad det burde være. Er min regne måde korrekt?
filstorrelse er filens størrelse i bytes.
var TickCount : Cardinal; AntalKBit, kbps : real; begin IdFTP.Connect; TickCount:=GetTickCount; IdFTP.Put('ftpfil.zip','ftpfil.zip',false); TickCount:=GetTickCount-TickCount; AntalKBit:=(filstorrelse*8)/1000; TickCount:=TickCount div 1000; kbps:=Round(AntalKBit/TickCount); Showmessage('FTP put: '+FloatToStr(kbps)+' kbps'); end;
Umiddelbart ser det rigtigt ud (naturligvis forudsat at GetTickCount fungerer korrekt). Hvor stor en forskel snakker vi om (dvs. hvad forventede du, og hvad er dit resultat)? Det kan jo tænkes det er et spørgsmål om noget overhead.
Du burde i øvrigt kunne spare dine to divisioner med 1000, men det er jo en detalje.
Her er lidt flere tal: Filens størrelse: 479213 bytes Tid det tager at sende den: ca. 19 sek.
Både mit eget program og WS_FTP bruger de ca. 19 sek. på at sende filen, WS_FTP skriver dette: Transmitted 479213 bytes in 19.0 secs, (247.47 Kbps), transfer succeeded hvilket jeg ikke kan se hvordan det skal regnes ud?
WS_FTP skriver så også: 19.659 seconds (measured here), 23.81 Kbytes per second og dette kan jeg fint regne mig frem til (479213/1024) / 19.659 = 23.81 Kbytes
Med den filstørrelse KUNNE det skyldes det overhead FTP-protokollen har i og med at den opretter en separat forbindelse til data, og sender nogle kommandoer for at forberede dette. Jeg kunne forestille mig at WS_FTP ser bort fra den initialisering, og den derfor melder en højere hastighed.
Prøv evt. med en større fil, så burde forskellen blive mindre.
Du har ret, med en fil næsten 10 gange så stor blev resultatet. Download hastighed: 3394 kb/sek Upload hastighed: 211 kb/sek
Det er blot et test program der kun skal benyttes i et par måneder til at teste stabiliteten på en ny fiber forbindelse så jeg gider ikke bruge tid på at sætte mig ind i FTP og overhead. Filen der skal sendes/modtages på fiber forbindelsen skal nok være på en 10 MB og så vil resultatet nok være ganske brugbart.
Jeg tror heller ikke umiddelbart du kan få de oplysninger uden at ændre i Indy-koden eller implementere det selv. Har dog ike arbejdet med det, så der kan selvfølgelig være et eller andet... men til det formål skulle det være fint :)
Synes godt om
Ny brugerNybegynder
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.
Martin Thorborg overvejer at droppe de amerikanske tech-leverandører efter nedlukning af chefanklagers mailkonto: "Det er en sikkerhedsrisiko for den virksomhed, som jeg er direktør i"