Hoi
Ik ben bezig een benchmark tooltje te schrijven in java.
Ding vist een 10 megabyte file van mijn webserver af, en doet dit 100x.
Tijd meet ik voor het lusje, en na.
Echter kom ik eropuit dat mijn 100mbit netwerk dat in 25ms zou doen (en dus 40*10 megabyte per sec ....).
Ik heb hiervoor een inputstream object genomen waar een URL aan gevoerd wordt, en de code staat hieronder.
Ik weet dat mijn methode niet perfect is , want de lus zelf tel ik mee, de functie-aanroep en het opnieuw creeren van het object etc. Absoluut snelheid meten is namelijk ook niet mijn doel (ik wil weten of een point-to-point wireless link hetzelfde blijft presteren bij verschillende wisselende invloeden op langere termijn), maar dit gaat wel heel erg ver van de verwachting afwijken...
Normaal zou ik dit aan buffering wijten, maar het bestandje van 10 meg staat echt op mijn webserver en ik zie het ook in het access_log netjes voorbij komen.
De relevante code:
en:
Ook met een packet-sniffer zie ik trouwens dat hij continue data blijft versturen.
Kan iemand me een bump de goede kant op geven?
Ik draai het btw met een Linux systeem, en de webserver is apache.
edit: de uitlijning is bij mij btw wel goed, maar copy-paste heeft het verneukt.
Ik ben bezig een benchmark tooltje te schrijven in java.
Ding vist een 10 megabyte file van mijn webserver af, en doet dit 100x.
Tijd meet ik voor het lusje, en na.
Echter kom ik eropuit dat mijn 100mbit netwerk dat in 25ms zou doen (en dus 40*10 megabyte per sec ....).
Ik heb hiervoor een inputstream object genomen waar een URL aan gevoerd wordt, en de code staat hieronder.
Ik weet dat mijn methode niet perfect is , want de lus zelf tel ik mee, de functie-aanroep en het opnieuw creeren van het object etc. Absoluut snelheid meten is namelijk ook niet mijn doel (ik wil weten of een point-to-point wireless link hetzelfde blijft presteren bij verschillende wisselende invloeden op langere termijn), maar dit gaat wel heel erg ver van de verwachting afwijken...
Normaal zou ik dit aan buffering wijten, maar het bestandje van 10 meg staat echt op mijn webserver en ik zie het ook in het access_log netjes voorbij komen.
De relevante code:
code:
1
2
3
4
5
6
7
8
9
| URL url = new URL(args[0]);
InputStream in = url.openStream();
startDate=new Date();
for(int i=0; i< nrOfDownloads; i++)
{
downloadFile(in);
in = url.openStream();
} |
en:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| private static boolean downloadFile(InputStream in)
{
try
{
int data = in.read();
if (data == -1)
{
return(true);
}
else
{
}
}
catch(Exception e)
{
return(false);
}
return(true);
} |
Ook met een packet-sniffer zie ik trouwens dat hij continue data blijft versturen.
Kan iemand me een bump de goede kant op geven?
Ik draai het btw met een Linux systeem, en de webserver is apache.
edit: de uitlijning is bij mij btw wel goed, maar copy-paste heeft het verneukt.