Salut a tous,
J'ai un probleme avec une mesure de vitesse d'upload et dowload. Je voulais tester les performances des sockets java, et j'ai ecris un petit programme....qui me donne des resultats evidemment erronés.
Un client interroge un serveur de newsGroup, envoye des requetes pour des articles a la chaine: je mesure la vitesse d'envoi des requetes. Un thread ecoute sur le meme socket ce qui arrive: je mesure la quantite d'info recu.
Voici ce que j'ai a l'ecran..
Code :
- Downloading at :162 ko/s.
- Uploading at :30 ko/s.
- Downloading at :160 ko/s.
- Uploading at :20 ko/s.
- Downloading at :164 ko/s.
- Uploading at :12 ko/s.
- Downloading at :180 ko/s.
- Uploading at :20 ko/s.
- Downloading at :225 ko/s.
- Uploading at :19 ko/s.
|
Formidable, mais ma connection est la suivante: 3.0 Mbps download and 384 Kbps upload. ( Rogers express Canada) et je devrais avoir au max dowload=375 ko/s et 48 ko/s en upload.
Voici mes algo:
Upload:
Code :
- String toSend = "NEXT\n";
- int totaltSentBytes = 0; // Total de byte envoye depuis la derniere mesure.
- int bytesSent = toSend.getBytes().length ; // Octets seront envoyes a chaque iteration
- long t0 = System.currentTimeMillis(); // On initialise t0 a "maintenant"
- // Grosso modo, il y a 700 000 messages a rapatrier (c'est un newsGroup )
- for (int cursor = this.olderMessageId ; cursor <= this.latestMessageID ; cursor++)
- {
- this.conn.getOut().write(toSend); // Ecriture dans le socket avec un PrintWriter
- totaltSentBytes += bytesSent; // "Mise a jour du compteur"
- if ((System.currentTimeMillis() - t0) > 5000) //mesure toutes les 5 secondes
- {
- System.out.println("Uploading at :"+totaltSentBytes/1024/((System.currentTimeMillis() - t0)/1000)+" ko/s." );
- totaltSentBytes = 0;
- t0 = System.currentTimeMillis();
- }
- }
|
Download:
Code :
- int bytesRead = 0;
- long t0 = System.currentTimeMillis();
- while (true){
- in.read();
- bytesRead += 8;
- if ((System.currentTimeMillis() - t0) >5000)
- {
- System.out.println("Downloading at :"+bytesRead/1024/((System.currentTimeMillis() - t0)/1000)+" ko/s." );
- bytesRead = 0;
- t0 = System.currentTimeMillis();
- }
- }
|
Comment se fait-il que j'upload et download quasiement a 50% de ce que mon provider permet ?
(Je precise que si j'utilise un client commercial genre Newsbin, l'upload et le download se font aux limites de mon FAI).
Je ne dispose pas de plusieurs ordinateurs, certains ont-ils fait ce genre de test sur un LAN ?
Ou alors il y a quelques chose que j'ai mal compris ?
PS: Je n'utilise pas d'anti-virus et ma machine tourne sous XP Pro....
Message édité par bartleby le 06-09-2005 à 18:00:09