Avatar billede kroning Nybegynder
04. juli 2007 - 01:17 Der 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;
Avatar billede pidgeot Nybegynder
04. juli 2007 - 13:00 #1
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.
Avatar billede kroning Nybegynder
04. juli 2007 - 14:19 #2
Jeg sidder lige nu på en 4096/256 linie (TDC) TDC´s hastighedstest siger:
Download hastighed: 3524 kb/sek
Upload hastighed: 218 kb/sek

hvilket jo er meget fint i forhold til hvad man kan forvente. Men min test siger:
Download hastighed: 2610 kb/sek
Upload hastighed: 183 kb/sek

hvilket jo er noget under TDC´s beregning.

De 2x1000 er fjernet, sådan går det jo når man sidder midt om natten :-)
Avatar billede kroning Nybegynder
04. juli 2007 - 15:02 #3
Det skal lige nævnes at hvis jeg sender/modtager sammme fil med FTP programmet WS_FTP så giver den mig de samme hastigheder som TDC´s hastighedstest.
Avatar billede kroning Nybegynder
04. juli 2007 - 15:35 #4
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


Jeg er forvirret?
Avatar billede pidgeot Nybegynder
04. juli 2007 - 17:10 #5
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.
Avatar billede kroning Nybegynder
04. juli 2007 - 18:16 #6
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.

Takker. Smid et svar.
Avatar billede pidgeot Nybegynder
04. juli 2007 - 20:34 #7
Værsgo :)

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 :)
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