Για μαθητική εργασία στο μάθημα της τεχνολογίας κάναμε ένα μικρό benchmarking με απλό πρόγραμμα σε Python το οποίο ελέγχει αν ένας αριθμός είναι πρώτος από το 2 έως το 20000. Για να είναι πιο αντικειμενικές οι μετρήσεις μας bootάραμε κάθε Η/Υ με το ίδιο Live-USB (KNOPPIX) και τρέξαμε το πρόγραμμα χωρίς δίκτυο κλπ. Σίγουρα πήραμε "σχετικές" μετρήσεις αφού τα συστήματα είχαν διαφορετική σύνθεση hardware, αλλά ήταν αποδεκτό για μια εισαγωγική σχολική εργασία.
Πρόγραμμα
Το πρόγραμμα εκτελεί 10 φορές ένα loop μετρήσεως πρώτων αριθμών, καταγράφει το χρόνο εκτέλεσης κάθε επανάληψης και στο τέλος μας δείχνει το μέσο όρο και τον βέλτιστο χρόνο.
Κώδικας: Επιλογή όλων
#sbench.py
import time
#---------------------------------------------
l=[]
repetition=10
average=0
for i in range (repetition):
start=time.time()
x=1
while True:
x=x+1
y=2
while True:
if x%y==0:
if x==y:
break
else:
break
else:
y=y+1
if x >=20000:
break
end=time.time()
duration=end-start
print i+1,"/",repetition,"{:.3f}".format(duration)
l.append(duration)
l.sort()
for c in range (repetition):
average=average+l[c]
print "average:","{:.3f}".format(average/repetition)
print "best is:","{:.3f}".format(l[0])
Μετρήσεις
Ο τελικός πίνακας μετρήσεων μαζί με τον δείκτη απόδοσης Passmark (https://www.cpubenchmark.net):
Κώδικας: Επιλογή όλων
Χρόνος εκτ. Δείκ.Απόδοσης Ελεγχος;
Live or sbench.py PassMark α/α κατάταξης Χρόνος επί
Επεξεργαστής Install M.O. Ταχύτερος Πυρήνες Συνολ. 1 πυρ. Εμείς PassMark PassMark
XEON E5-2623 v3 @3.00GHz I 2.332 2.213 4 9097 1847 1 8 4087
i5-4300M @2.60GHz I 2.280 2.264 2 4388 1794 2 9 4062
i7-6700 @3.40GHz I 2.302 2.267 4 10038 2160 3 3 4897
i5-3570K @3.40GHz I 2.314 2.270 4 7148 2028 4 7 4604
i7-6700 @3.40GHz L 2.288 2.275 4 10038 2160 5 4 4914
i5-4590 @3.30GHz I 2.378 2.356 4 7225 2113 6 5 4978
i7-4770K @3.50GHz I 2.498 2.422 4 10114 2255 7 2 5462
i7-4790K @4.00GHz I 2.457 2.434 4 11197 2530 8 1 6158
XEON E5-1660 v4 @3.20GHz I 2.793 2.764 8 16334 2102 9 6 5810
XEON E5-2680 v4 @2.40GHz I 2.901 2.901 14 19905 1772 10 10 5141
A10-8750 @3.60GHz I 3.321 3.097 4 5177 1637 11 12 5070
A10-8750 @3.60GHz L 3.866 3.683 4 5177 1637 12 13 6029
i5-4200M @2.50GHz L 3.875 3.871 2 4031 1647 13 11 6376
Core2 Quad Q9550 @3.64GHz I* 3.906 3.906 4 5157 1544 14 15 6031
i3-2100 @3.10GHz L 4.540 4.084 2 3661 1583 15 14 6465
i7-860 @2.80GHz L 4.615 4.605 4 5059 1226 16 17 5646
Core2Duo Ε8400 @3.00GHz L 4.735 4.733 2 2163 1252 16a 16a 5925
i5 M460 @2.53GHz L 4.782 4.774 2 2334 1070 17 18 5108
VM XEON E5-2660 v2 @2.2GHz VM 4.911 4.795 4 11161 1417 18 16 6795
Core2Duo T7250 @2.00GHz L 6.160 6.156 2 1112 710 19 19 4371
Pentium E1400 @2.00GHz L 6.724 6.722 2 1042 693 20 20 4658
Core2Duo T5670 @1.80GHz L 6.811 6.780 2 1009 655 21 22 4441
Pentium T3200 @2.00GHz L 6.827 6.824 2 1032 679 22 21 4633
Pentium 4 @2.80GHz L 13.145 13.118 1 323 629 23 23 8251
Atom N270 @1.60GHz L 24.624 24.590 1 270 235 24 24 5779
Atom N550 @1.50GHz L 26.203 26.183 2 515 230 25 25 6022
I*=overclocked
Νεότερες μετρήσεις που δεν μπήκαν στην κατάταξη:
Κώδικας: Επιλογή όλων
Χρόνος εκτ. Δείκ.Απόδοσης Ελεγχος;
Live or sbench.py PassMark α/α κατάταξης Χρόνος επί
Επεξεργαστής Install M.O. Ταχύτερος Πυρήνες Συνολ. 1 πυρ. Εμείς PassMark PassMark
Celeron E3200 @2.40GHz L 5.713 5.710 2 839 970 - - 5541
i5-8250U @1.60GHz L 2.543 2.542 4 5900 1914 - - 4865
i5-8250U @1.60GHz I 2.036 2.022 4 5900 1914 - - 3870
i7-8550U @1.80GHz L 1.877 1.874 4 5925 2054 - - 3849
i5-10210U @1.60GHz L 2.060 2.017 4 6126 2180 - - 4491
i5-12400 @4.40GHz L 1.244 1.241 6 19456 3536 - - 4399
i5-9600K @3.70GHz L 1.471 1.470 6 10710 2750 - - 4043
Με απλή ανάγνωση των μετρήσεων βλέπουμε μια γενική συμφωνία στον α/α κατάταξης των επεξεργαστών μεταξύ των δοκιμών μας (Live-USB) και του δείκτη PassMark. Παρόλα αυτά, ο δείκτης PassMark δεν αντικατοπτρίζεται ευθέως στην ταχύτητα εκτέλεσης του απλού προγράμματός μας, δηλαδή μια μεγάλη διαφορά στο δείκτη PassMark δε σημαίνει αντίστοιχη επιτάχυνση στην ολοκλήρωση του προγράμματος. Αυτό ίσως να συμβαίνει λόγω μετάφρασης Python ή στο setup των Η/Υ από το Live-USB.
Χρησιμότητα
Προσωπικά χρησιμοποιώ αυτούς τους πίνακες σε συνδυασμό με τα τεχνικά χαρακτηριστικά του motherboard για φθηνές αναβαθμίσεις σε παλαιά συστήματα φίλων. Για παράδειγμα, το σύστημα που αναφέρω στις μετρήσεις με τον επεξεργαστή "Pentium E1400 @2.00GHz" αναβαθμίστηκε με €10 (CPU και κάρτα μνήμης από ebay) σε αυτό που αναφέρεται ως "Core2Duo Ε8400 @3.00GHz" βελτιώνοντάς την απόδοσή του κατά 30% (έτρεξε το sbench.py σε 4.733" από 6.722").