Προς το περιεχόμενο

QSpeedTest - Crossplaform tool για μέτρηση ping, packet loss και ταχύτητας download


Προτεινόμενες αναρτήσεις

Προσθήκη 23/5/2010: Τα αποτελέσματα που προκύπτουν από την χρήση του προγράμματος παρακαλώ θερμά να τα δημοσιεύετε στο θέμα Αποτελέσματα μετρήσεων γραμμής με το QSpeedTest. Ευχαριστώ!

 

 

Καλημέρα σε όλους. Ξεκινώ το thread για να σας παρουσιάσω ένα προτζεκτάκι που κάνει τα όσα αναφέρονται στον τίτλο και ίσως φανεί χρήσιμο σε «ανήσυχους» κατόχους ADSL (και όχι μόνο! :lol:)

 

Με αφορμή αυτήν τη συζήτηση στο ADSLgr.com, είχα αρχίσει να φτιάχνω ένα utility που εκτελούσε σε γραφικό περιβάλλον τα όσα ξεκίνησε ο nnn με το Powershell shell script του στο προαναφερθέν thread, δηλαδή κυρίως επαναληπτικά pings σε μία σειρά από εγχώριους και διεθνείς servers και συλλογή των αποτελεσμάτων για την παρουσίαση στον χρήστη. Επέλεξα να το φτιάξω με τη βοήθεια του AutoIt3, λόγω ευκολίας (σε ένα απόγευμα, το βασικό functionality είχε υλοποιηθεί!) και μηδαμινών εξωτερικών dependencies με μικρό μέγεθος τελικού εκτελέσιμου αρχείου. Στην πορεία, ήθελα να προσθέσω κι άλλες δυνατότητες, όπως υποστήριξη και για άλλες πλατφόρμες πλην Windows, κάποιου είδους παραλληλισμό για να επιταχυνθεί η διαδικασία κ.ά., οπότε οι περιορισμοί του AutoIt3 άρχισαν να γίνονται εμφανείς.

 

Τελικά, γύρισα τον κώδικα σε C++ και Qt, πρόσθεσα μερικά ακόμη features μαζί με τη δυνατότητα παραγωγής εκτελέσιμου και για Linux και τελικά, χτες το βράδυ το ανέβασα ως project ανοικτού κώδικα στο SourceForge.

 

 

Τί κάνει το πρόγραμμα;

 

1. Φορτώνει μία προκατασκευασμένη λίστα με servers-στόχους

post-4351-129063084028_thumb.png

2. Για τους στόχους αυτούς, καλεί διαδοχικά την εντολή ping του συστήματος

3. Παίρνει τα αποτελέσματα της ping, υπολογίζει μερικά στατιστικά όπως μέσο όρο, απώλεια πακέτων και jitter και τα προβάλλει στην οθόνη, κατά groups:

post-4351-129063084032_thumb.png

4. Στο τέλος του benchmark (αν ο χρήστης δε διέκοψε από το Stop button), εμφανίζει συγκεντρωτικά στατιστικά

5. Επίσης στο τέλος ενός επιτυχούς benchmark, ενεργοποιούνται τα δύο αριστερότερα κουμπιά που αντιγράφουν στο clipboard του συστήματος μία αναφορά με τα αποτελέσματα σε δύο δυνατές μορφές: vBulletin κώδικα για άμεση δημοσίευση σε κάποιο forum που είναι στημένο (προφανώς) σε vBulletin:

post-4351-129063083948_thumb.png

ή HTML κώδικα (XHTML 1.0 Transitional valid κατά τον W3C validator) που μπορείτε να τον σώσετε ως αρχείο .html και να ανοίξει σε οποιονδήποτε web browser:

post-4351-129063084036_thumb.png

Όσοι επιθυμούν απλό text report, μπορούν φυσικά με το ποντίκι ή το πληκτρολόγιο να επιλέξουν από την κεντρική περιοχή του παραθύρου το κείμενο χειροκίνητα και να το κάνουν copy στο clipboard

 

 

Το SourceForge project βρίσκεται εδώ:

https://sourceforge.net/projects/qspeedtest/

και download του προγράμματος μπορείτε να κάνετε από εδώ:

https://sourceforge.net/projects/qspeedtest/files/

 

 

Μερικές ακόμη σχετικές λεπτομέρειες (αν και, στην παρούσα ενότητα, το topic απευθύνεται προφανώς σε τελικούς χρήστες, όχι σε προγραμματιστές):

1. Έγινε release υπό την άδεια GPL v3

2. Υπενθυμίζω ότι ο πηγαίος κώδικας είναι σε C++ και Qt framework

3. Όποιος θέλει, μπορεί να κατεβάσει εκτός από τα binary releases και τον πηγαίο κώδικα ως ξεχωριστά αρχεία ή ενιαίο .tar.gz από εδώ ή anonymously μέσω SVN κάνοντας checkout με κάποιον Subversion client

4. Όποιος θέλει να συνεισφέρει στο project, επικοινωνεί μαζί μου για τα περαιτέρω (π.χ. write πρόσβαση στο SVN repo του project στο SourceForge)

 

 

Αυτά από εμένα, ο λόγος σε εσάς για σχόλια, κριτική, ιδέες και ότι άλλο προκύψει! :lol:

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 209
  • Δημ.
  • Τελ. απάντηση

Κατέβασε από τη σελίδα του project και τα required Qt DLLs και βάλ' τα στον ίδιο κατάλογο με το .exe αρχείο. Μετά, για κάθε νέα έκδοση του QSpeedTest δε θα χρειάζεται να τα ξανακατεβάζεις. Αρκεί να παίρνεις μόνο το συμπιεσμένο αρχείο με το νέο .exe και να το αποσυμπιέζεις στον ίδιο κατάλογο αντικαθιστώντας το παλιό. Τα Qt DLLs θα συνεχίσουν να λειτουργούν και με το νέο .exe. :-)

 

Αυτά τα θεματάκια θα λυθούν ελπίζω στην πορεία, αν δω ότι το project ωριμάζει και το χρησιμοποιεί κόσμος, με δημιουργία installer για τη Windows έκδοση που θα φροντίζει αυτόματα για όλα αυτά.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μπράβο και απο εμένα. Καποια σχόλια για τον κώδικα τώρα. Παρατήρησα ότι χρησιμοποιείς ορισμένες καθολικές μεταβλητές αν και οι περισσότερες είναι σταθερές. Είχες σκεφτεί καθόλου να χρησιμοποιήσεις μια singleton-κλάση; Απο την άποψη ότι να υπάρχει ένα κεντρικό σημείο απο το οποίο να γίνονται οι όποιες αλλαγές των μεταβλητών. Επίσης παρατήρησα την χρήση raw pointer. Προσωπικά θα χρησιμοποιούσα QScopedPointer κλάση για την αυτόματη διαχείριση των δεικτών. Βέβαια ίσως να μην χρειάζεται μιας και κληρονομείς έμμεσα απο την QObject. Αυτά τα λίγα απο εμένα, keep up the good work.

[table=head] | Client info

Report created by |

QSpeedTest -

Homepage - Discuss

|

Target list version |

201004291059

|

Target list comment |

|

Host OS |

Windows XP 32bit

|

Host CPU cores |

1

|

Test date and time |

Σάββατο 01/05/2010 16:00:59

|

ISP |

OTEnet S.A.

|

Internet IP |

85.74.xxx.xxx

|

BBRAS |

N/A

|

[/table]

 

 

Greek servers

 

 

[table=head]

Target

|

Average ping time

| Packet loss | Jitter | Rank

Hellas Online |

39.75 msec

|

0.00%

|

+3.75 msec

|

B

|

Wind |

43.50 msec

|

0.00%

|

-4.25 msec

|

B

|

Cyta Hellas |

52.00 msec

|

0.00%

|

+6.25 msec

|

B

|

On Telecoms |

47.00 msec

|

0.00%

|

+0.75 msec

|

B

|

Vivodi |

78.50 msec

|

0.00%

|

-3.25 msec

|

C

|

Forthnet |

28.50 msec

|

0.00%

|

+8.25 msec

|

A

|

OTE |

23.00 msec

|

0.00%

|

-1.00 msec

|

A

|

Netone |

33.00 msec

|

0.00%

|

+2.00 msec

|

B

|

NTUA@GRNET |

52.50 msec

|

0.00%

|

-8.25 msec

|

B

|

Vodafone |

35.25 msec

|

0.00%

|

-6.25 msec

|

B

|

Orange Business Hellas |

66.00 msec

|

0.00%

|

+5.25 msec

|

B

|

Verizon Hellas |

157.00 msec

|

0.00%

|

-3.50 msec

|

D

|

Group total ping time |

656.00 msec

|

Group average ping time |

54.67 msec

|

[/table]

 

 

International servers

 

 

[table=head]

Target

|

Average ping time

| Packet loss | Jitter | Rank

DE-CIX |

93.50 msec

|

0.00%

|

-2.75 msec

|

C

|

AMS-IX |

90.50 msec

|

0.00%

|

+6.25 msec

|

C

|

LINX |

82.50 msec

|

0.00%

|

-2.25 msec

|

C

|

NL-IX |

119.25 msec

|

0.00%

|

-15.25 msec

|

C

|

RIPN@MSK-IX |

130.25 msec

|

0.00%

|

-0.25 msec

|

D

|

ESPANIX |

100.50 msec

|

0.00%

|

-6.50 msec

|

C

|

MIX |

136.75 msec

|

0.00%

|

+2.00 msec

|

D

|

PANAP |

143.25 msec

|

0.00%

|

-12.25 msec

|

D

|

Akamai |

99.50 msec

|

0.00%

|

-5.00 msec

|

C

|

Cachefly |

145.00 msec

|

0.00%

|

-21.25 msec

|

D

|

Google CDN |

239.25 msec

|

0.00%

|

+34.00 msec

|

E

|

Google CDN |

80.00 msec

|

0.00%

|

+10.50 msec

|

C

|

Google CDN |

97.00 msec

|

0.00%

|

-1.00 msec

|

C

|

Yahoo US |

161.75 msec

|

0.00%

|

-2.50 msec

|

D

|

AT&T US |

176.25 msec

|

0.00%

|

+8.75 msec

|

D

|

Global Crossing US |

188.00 msec

|

0.00%

|

+5.50 msec

|

D

|

Level3 US |

228.75 msec

|

0.00%

|

+0.75 msec

|

E

|

Telia US |

152.50 msec

|

0.00%

|

+1.50 msec

|

D

|

Qwest US |

196.00 msec

|

0.00%

|

-9.00 msec

|

D

|

Tata Communications US |

245.25 msec

|

0.00%

|

+19.25 msec

|

E

|

Verizon US |

161.00 msec

|

0.00%

|

+4.25 msec

|

D

|

Savvis US |

193.25 msec

|

0.00%

|

-1.75 msec

|

D

|

AOL Transit Data Network US |

158.75 msec

|

0.00%

|

-1.00 msec

|

D

|

Cogent Communications US |

205.75 msec

|

0.00%

|

+1.25 msec

|

E

|

Hurricane Electric US |

240.75 msec

|

0.00%

|

+2.00 msec

|

E

|

AboveNet US |

219.75 msec

|

0.00%

|

-3.75 msec

|

E

|

XO Communications US |

234.25 msec

|

0.00%

|

+4.00 msec

|

E

|

Sprint Nextel US |

162.00 msec

|

0.00%

|

-3.00 msec

|

D

|

Allstream US |

191.75 msec

|

0.00%

|

-6.00 msec

|

D

|

TW Telecom US |

202.50 msec

|

0.00%

|

+3.50 msec

|

E

|

Deutche Telecom Germany |

127.67 msec

|

25.00%

|

-34.00 msec

|

D

|

Global Crossing Germany |

106.25 msec

|

0.00%

|

+5.00 msec

|

C

|

Cogent Germany |

90.50 msec

|

0.00%

|

+5.50 msec

|

C

|

Telia Germany |

115.00 msec

|

0.00%

|

-1.50 msec

|

C

|

Level 3 Germany |

97.25 msec

|

0.00%

|

-1.00 msec

|

C

|

Tata Communications Germany |

89.00 msec

|

0.00%

|

+0.00 msec

|

C

|

Savvis Germany |

94.00 msec

|

0.00%

|

-5.75 msec

|

C

|

Cable&Wireless Germany |

112.25 msec

|

0.00%

|

+5.75 msec

|

C

|

PCCW Germany |

99.75 msec

|

0.00%

|

+3.00 msec

|

C

|

NTT Communications UK |

84.25 msec

|

0.00%

|

-2.75 msec

|

C

|

AOL Transit Data Network UK |

84.25 msec

|

0.00%

|

-2.00 msec

|

C

|

Tinet US |

86.00 msec

|

0.00%

|

+3.00 msec

|

C

|

GEANT UK |

117.25 msec

|

0.00%

|

+6.00 msec

|

C

|

British Telecom UK |

83.50 msec

|

0.00%

|

-6.00 msec

|

C

|

Hurricane Electric UK |

75.75 msec

|

0.00%

|

-6.75 msec

|

C

|

Tinet Netherlands |

131.75 msec

|

0.00%

|

-3.50 msec

|

D

|

AboveNet Netherlands |

118.50 msec

|

0.00%

|

+12.50 msec

|

C

|

Wanadoo Netherlands |

86.25 msec

|

0.00%

|

+6.25 msec

|

C

|

GEANT Netherlands |

107.00 msec

|

0.00%

|

+1.50 msec

|

C

|

Opentransit France |

90.25 msec

|

0.00%

|

+7.00 msec

|

C

|

Sprint Nextel France |

96.75 msec

|

0.00%

|

-0.50 msec

|

C

|

Seabone Italy |

127.25 msec

|

0.00%

|

+4.25 msec

|

D

|

Infostrada Italy |

105.50 msec

|

0.00%

|

+3.00 msec

|

C

|

Telstra Australia |

472.00 msec

|

25.00%

|

-51.67 msec

|

F

|

Optus Australia |

373.75 msec

|

0.00%

|

+0.25 msec

|

F

|

NTT Japan |

79.00 msec

|

0.00%

|

-0.25 msec

|

C

|

AboveNet Japan |

389.00 msec

|

0.00%

|

-2.50 msec

|

F

|

Verizon Chech |

97.25 msec

|

0.00%

|

+6.75 msec

|

C

|

ChinaNet China |

356.00 msec

|

0.00%

|

+2.50 msec

|

F

|

PCCW Hong Kong |

363.75 msec

|

0.00%

|

+11.75 msec

|

F

|

Pacnet Signapore |

416.50 msec

|

0.00%

|

+7.50 msec

|

F

|

Isnet South Africa |

237.50 msec

|

0.00%

|

+1.50 msec

|

E

|

Maxnet New Zealand |

403.00 msec

|

0.00%

|

-3.50 msec

|

F

|

Bell Canada |

201.75 msec

|

0.00%

|

+11.25 msec

|

E

|

Leaseweb Netherlands |

86.25 msec

|

0.00%

|

+7.25 msec

|

C

|

The Planet US |

212.75 msec

|

0.00%

|

+7.75 msec

|

E

|

Softlayer US |

222.25 msec

|

0.00%

|

-7.25 msec

|

E

|

Dreamhost US |

253.00 msec

|

0.00%

|

-2.25 msec

|

F

|

Rackspace US |

306.75 msec

|

0.00%

|

-25.50 msec

|

F

|

Serverloft Germany |

100.25 msec

|

0.00%

|

+3.00 msec

|

C

|

Host-Europe Germany |

94.75 msec

|

0.00%

|

-7.50 msec

|

C

|

Hetzner Germany |

96.75 msec

|

0.00%

|

+5.00 msec

|

C

|

OVH |

84.00 msec

|

0.00%

|

-0.75 msec

|

C

|

Group total ping time |

12047.67 msec

|

Group average ping time |

165.04 msec

|

[/table]

 

 

Game servers

 

 

[table=head]

Target

|

Average ping time

| Packet loss | Jitter | Rank

NGI Italy |

127.25 msec

|

0.00%

|

+4.00 msec

|

D

|

Fastweb Italy |

124.00 msec

|

0.00%

|

+4.00 msec

|

C

|

NGZ-Server Germany |

97.00 msec

|

0.00%

|

-3.75 msec

|

C

|

K-Play Germany |

94.00 msec

|

0.00%

|

+0.75 msec

|

C

|

GC-Server Germany |

225.50 msec

|

0.00%

|

-30.00 msec

|

E

|

247CS Germany |

278.75 msec

|

0.00%

|

+15.25 msec

|

F

|

Esport-Servers Germany |

266.00 msec

|

25.00%

|

-0.67 msec

|

F

|

LB-Server Germany |

291.50 msec

|

0.00%

|

-13.00 msec

|

F

|

G-Portal Germany |

217.25 msec

|

0.00%

|

-4.75 msec

|

E

|

Jolt UK |

269.75 msec

|

0.00%

|

-26.00 msec

|

F

|

Multiplay UK |

338.00 msec

|

0.00%

|

+46.50 msec

|

F

|

ServerFFS Netherlands |

225.00 msec

|

0.00%

|

+1.50 msec

|

E

|

GS-NET Netherlands |

201.50 msec

|

0.00%

|

-4.00 msec

|

E

|

Clanhost Netherlands |

269.25 msec

|

0.00%

|

+2.00 msec

|

F

|

RDSNET Romania |

368.25 msec

|

0.00%

|

-32.50 msec

|

F

|

Dataplex Hungary |

548.00 msec

|

0.00%

|

-11.50 msec

|

F

|

EA US |

614.75 msec

|

0.00%

|

-0.25 msec

|

F

|

Valve US |

625.75 msec

|

0.00%

|

+14.25 msec

|

F

|

Gameservers US |

466.25 msec

|

0.00%

|

+66.50 msec

|

F

|

Group total ping time |

5647.75 msec

|

Group average ping time |

297.25 msec

|

[/table]

 

 

 

 

[table=head]

Test metric

| Value

Pings per target |

4

|

Multithreading |

OFF

|

Threads used |

1

|

Pings completed in |

127.937 sec

|

Targets unreachable |

0 / 104

|

Test total ping time |

18351.4 msec

|

Average ping time per target |

176.456 msec

| [/table]

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Capture.JPG γιατι?

 

parsifal μου εβγαλε κ εμενα οτι λειπουν κατι dll . 4 αν θυμαμαι καλα . τα κατεβασα τα πεταξα στο system κ τωρα περνω αυτο το μηνυμα

post-120420-129063084053_thumb.png

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καποια σχόλια για τον κώδικα τώρα. Παρατήρησα ότι χρησιμοποιείς ορισμένες καθολικές μεταβλητές αν και οι περισσότερες είναι σταθερές. Είχες σκεφτεί καθόλου να χρησιμοποιήσεις μια singleton-κλάση; Απο την άποψη ότι να υπάρχει ένα κεντρικό σημείο απο το οποίο να γίνονται οι όποιες αλλαγές των μεταβλητών.

 

Ναι, για τις global variables θα πρέπει να ακολουθήσω Singletton Pattern κάποια στιγμή. Υπάρχει κι ένα θεματάκι με το thread-safety των globals που δεν είναι const, θα το κοιτάξω κι αυτό.

 

 

Επίσης παρατήρησα την χρήση raw pointer. Προσωπικά θα χρησιμοποιούσα QScopedPointer κλάση για την αυτόματη διαχείριση των δεικτών. Βέβαια ίσως να μην χρειάζεται μιας και κληρονομείς έμμεσα απο την QObject.

 

Raw pointers; Πού; Μόνο για το "settings" object έχω memory allocation μέσω pointer, το οποίο γίνεται delete στον destructor της κλάσης που είναι member object. Αν και δεν υπήρχε περίπτωση memory leak, αφού ζει μέχρι τον τερματισμό του προγράμματος.

 

 

Το μεγάλο πρόβλημα του κώδικα αυτήν τη στιγμή νομίζω πως είναι η παντελής απουσία σχολίων... :lol:

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

parsifal μου εβγαλε κ εμενα οτι λειπουν κατι dll . 4 αν θυμαμαι καλα . τα κατεβασα τα πεταξα στο system κ τωρα περνω αυτο το μηνυμα

 

Μήπως τα κατέβασες από άλλη σελίδα, αντί να πάρεις το έτοιμο πακετάκι στη σελίδα με τα downloads του project... ;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

ναι οντως τα κατεβασα απο αλλη σελιδα , λαθος μου . παιζει να κατεβασα κ απο οπου να ναι.

 

edit ... ακυρο

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.


  • Δημιουργία νέου...