Quelle Calculatrice programmable Choisir 2019 - Episode 6
Performances et Python
Performances et Python
Nous clôturons aujourd'hui la série des nouveaux tests QCC 2019, avec les performances.
Dans un premier temps, nous allons évaluer les performances de calcul en virgule flottante grâce à un programme dans le langage historique de chaque machine. Parce que le langage historique est normalement le plus intégré au système et illustre ainsi bien les performances globales. Prenons pour cela le script Python suivant, qui sera traduit ligne à ligne pour chaque calculatrice :
Nous allons réaliser le test dans deux contextes :
En effet la plupart des calculatrices offrent le choix d'obtenir des résultat décimaux ou exacts lorsque possible, et selon le mode courant cela peut influer sur les performances.
Si l'on se donne la peine de régler le mode numérique, l'appel
Revenons donc maintenant en mode exact, fonctionnement donc par défaut des machines si on ne fait pas attention. Pour le même appel
Avec le même script, passons maintenant sur l'évaluateur Python lorsque disponible. L'appel
Mais contrairement à la plupart des langages historiques, le Python distingue les nombres entiers des nombres flottants. Voici donc un script pour tester les calculs entiers en Python :
L'appel
Avant de conclure, une petite page de publicité pour la plus grande arnaque jamais vendue parmi les calculatrices graphiques en rayon scolaire :
A très bientôt pour le classement final de rentrée 2019 à la fois pour les BAC 2020 et 2021+ !
Dans un premier temps, nous allons évaluer les performances de calcul en virgule flottante grâce à un programme dans le langage historique de chaque machine. Parce que le langage historique est normalement le plus intégré au système et illustre ainsi bien les performances globales. Prenons pour cela le script Python suivant, qui sera traduit ligne à ligne pour chaque calculatrice :
- Code: Select all
try:
from time import *
except:
pass
def hastime():
try:
monotonic()
return True
except:
return False
def seuil(d):
timed,n=hastime(),0
start,u=0 or timed and monotonic(),2.
d=d**2
while (u-1)**2>=d:
u=1+1/((1-u)*(n+1))
n=n+1
return [(timed and monotonic() or 1)-start,n,u]
Nous allons réaliser le test dans deux contextes :
- le contexte exact, le plus souvent par défaut et inutile ici
- le contexte numérique (calculs décimaux approchés) optimal pour ce script
En effet la plupart des calculatrices offrent le choix d'obtenir des résultat décimaux ou exacts lorsque possible, et selon le mode courant cela peut influer sur les performances.
Si l'on se donne la peine de régler le mode numérique, l'appel
seuil(0.008)
donne le classement suivant :- 0,498s : NumWorks N0110 (32 bits : Cortex-M7/ARMv7 @216MHz)
- 0,688s : HP Prime G2 (32 bits : Cortex-A7/ARMv7 @528MHz)
- 0,785s : NumWorks N0100 (32 bits : Cortex-M4/ARMv7 @100MHz)
- 2,19s : Casio Graph 35+E II (32 bits : SH4
@58,98MHzoverclocké @274,91MHz via Ftune3 avec l'interpréteur C.Basic) - 2,23s : Casio Graph 35/75+E (32 bits : SH4
@29,49MHzoverclocké @267,78MHz via Ftune2 avec l'interpréteur C.Basic) - 2,37s : Casio Graph 90+E (32 bits : SH4 @117,96MHz
@58,98MHzoverclocké @274,91MHz via Ptune3 avec l'interpréteur C.Basic) - 2,41s : HP Prime G1 (32 bits : ARM9/ARMv5 @400MHz)
- 3,75s : Casio Graph 90+E (32 bits : SH4 @117,96MHz avec l'interpréteur C.Basic)
- 8,93s : TI-Nspire CX II (32 bits : ARM9/ARMv5 @396MHz)
- 10,02s : TI-Nspire (32 bits : ARM9/ARMv5 overclocké
@120MHz@150MHz via Nover) - 11,11s : Casio Graph 35+E II (32 bits : SH4 @58,98 avec l'interpréteur C.Basic)
- 12,24s : TI-Nspire (32 bits : ARM9/ARMv5 @120MHz)
- 12,9s : Casio Graph 35/75+E (32 bits : SH4 @29,49MHz avec l'interpréteur C.Basic)
- 18,64s : TI-Nspire CX CR4+ (révisions W+) (32 bits : ARM9/ARMv5
@156MHzoverclocké @216MHz via Nover) - 18,94s : TI-Nspire CX CR4+ (révisions W+) (32 bits : ARM9/ARMv5 @156MHz)
- 19,56s : TI-Nspire CX (révisions A-V) (32 bits : ARM9/ARMv5
@132MHzoverclocké @222MHz via Nover) - 20,92s : TI-Nspire CX (révisions A-V) (32 bits : ARM9/ARMv5 @132MHz)
- 25,26s : Casio Graph 35/75+E (32 bits : SH4
@29,49MHzoverclocké @267,78MHz via Ftune2) - 29,31s : Casio Graph 35+E II (32 bits : SH4
@58,98MHzoverclocké @274,91MHz via Ftune3) - 38,15s : Casio Graph 90+E (32 bits : SH4
@117,96MHzoverclocké @270,77MHz via Ptune3) - 50,77s : Casio Graph 90+E (32 bits : SH4 @117,96MHz)
- 81,03s : Casio Graph 35+E II (32 bits : SH4 @58,98MHz)
- 101,1s : Casio Graph 35/75+E (32 bits : SH4 @29,49MHz)
- 117,29s : Casio Graph 25+E (32 bits : SH4 @29,49MHz)
- 120,51s : TI-83 Premium CE Edition Python / TI-84 Plus CE-T (révisions M+) (8 + 32 bits : eZ80 @48MHz)
- 171,31s : TI-83 Premium CE / TI-84 Plus CE-T (révisions A-L) (8 bits : eZ80 @48MHz accéléré via AWSC)
- 196,79s : TI-83 Premium CE / TI-84 Plus CE-T (révisions A-L) (8 bits : eZ80 @48MHz)
- 260,41s : TI-82 Advanced / TI-84 Plus T (8 bits : z80 @15MHz)
- 607,91s : Casio fx-CP400+E (32 bits : SH4 @117,96MHz)
- 672,65s : Casio fx-92+ Spéciale Collège (8 bits : nX-U8/100 >1,5MHz - spécifications ancien modèle fx-92 Collège 2D+, non confirmées sur le nouveau)
- ≈798,18s : Esquisse GCEXFR / Lexibook GC3000FR (non programmable, estimation relative par comparaison des performances en tracé de graphes avec le modèle le plus proche technologiquement, la TI-82 Advanced)
Revenons donc maintenant en mode exact, fonctionnement donc par défaut des machines si on ne fait pas attention. Pour le même appel
seuil(0.008)
il y a quelques changements :- 0,498s : NumWorks N0110 (32 bits : Cortex-M7/ARMv7 @216MHz)
- 0,785s : NumWorks N0100 (32 bits : Cortex-M4/ARMv7 @100MHz)
- 2,19s : Casio Graph 35+E II (32 bits : SH4
@58,98MHzoverclocké @274,91MHz via Ftune3 avec l'interpréteur C.Basic) - 2,23s : Casio Graph 35/75+E (32 bits : SH4
@29,49MHzoverclocké @267,78MHz via Ftune2 avec l'interpréteur C.Basic) - 2,37s : Casio Graph 90+E (32 bits : SH4 @117,96MHz
@58,98MHzoverclocké @274,91MHz via Ptune3 avec l'interpréteur C.Basic) - 3,75s : Casio Graph 90+E (32 bits : SH4 @117,96MHz avec l'interpréteur C.Basic)
- 11,11s : Casio Graph 35+E II (32 bits : SH4 @58,98 avec l'interpréteur C.Basic)
- 11,26s : TI-Nspire CX II (32 bits : ARM9/ARMv5 @396MHz)
- 12,9s : Casio Graph 35/75+E (32 bits : SH4 @29,49MHz avec l'interpréteur C.Basic)
- 16,3s : TI-Nspire (32 bits : ARM9/ARMv5 overclocké
@120MHz@150MHz via Nover) - 16,51s : HP Prime G2 (32 bits : Cortex-A7/ARMv7 @528MHz)
- 20,32s : TI-Nspire (32 bits : ARM9/ARMv5 @120MHz)
- 23,6s : TI-Nspire CX CR4+ (révisions W+) (32 bits : ARM9/ARMv5
@156MHzoverclocké @216MHz via Nover) - 24,45s : TI-Nspire CX (révisions A-V) (32 bits : ARM9/ARMv5
@132MHzoverclocké @222MHz via Nover) - 25,23s : TI-Nspire CX CR4+ (révisions W+) (32 bits : ARM9/ARMv5 @156MHz)
- 25,26s : Casio Graph 35/75+E (32 bits : SH4
@29,49MHzoverclocké @267,78MHz via Ftune2) - 28,42s : TI-Nspire CX (révisions A-V) (32 bits : ARM9/ARMv5 @132MHz)
- 29,31s : Casio Graph 35+E II (32 bits : SH4
@58,98MHzoverclocké @274,91MHz via Ftune3) - 38,15s : Casio Graph 90+E (32 bits : SH4
@117,96MHzoverclocké @270,77MHz via Ptune3) - 43,13s : HP Prime G1 (32 bits : ARM9/ARMv5 @400MHz)
- 50,77s : Casio Graph 90+E (32 bits : SH4 @117,96MHz)
- 81,03s : Casio Graph 35+E II (32 bits : SH4 @58,98MHz)
- 104,05s : Casio Graph 35/75+E (32 bits : SH4 @29,49MHz)
- 119,57s : Casio Graph 25+E (32 bits : SH4 @29,49MHz)
- 152,27s : TI-83 Premium CE Edition Python / TI-84 Plus CE-T (révisions M+) (8 bits : eZ80 @48MHz)
- 262,82s : TI-82 Advanced / TI-84 Plus T (8 bits : z80 @15MHz)
- 311,51s : TI-83 Premium CE / TI-84 Plus CE-T (révisions A-L) (8 bits : eZ80 @48MHz accéléré via AWSC)
- 355,52s : TI-83 Premium CE / TI-84 Plus CE-T (révisions A-L) (8 bits : eZ80 @48MHz)
- 672,65s : Casio fx-92+ Spéciale Collège (8 bits : nX-U8/100 >1,5MHz - spécifications ancien modèle fx-92 Collège 2D+, non confirmées sur le nouveau)
- ≈798,18s : Esquisse GCEXFR / Lexibook GC3000FR (non programmable, estimation relative par comparaison des performances en tracé de graphes avec le modèle le plus proche technologiquement, la TI-82 Advanced)
- 9297,47s : Casio fx-CP400+E (32 bits : SH4 @117,96MHz)
Avec le même script, passons maintenant sur l'évaluateur Python lorsque disponible. L'appel
seuil(0.008)
nous donne :- 0,27s : TI-Nspire CX (révisions A-V) (32 bits : ARM9/ARMv5
@132MHzoverclocké @222MHz via Nover avec l'interpréteur MicroPython) - 0,376s : HP Prime G2 (32 bits : Cortex-A7/ARMv7 @528MHz)
- 0,38s : TI-Nspire (32 bits : ARM9/ARMv5 overclocké
@120MHz@150MHz via Nover avec l'interpréteur MicroPython) - 0,47s : TI-Nspire (32 bits : ARM9/ARMv5 @120MHz avec l'interpréteur MicroPython)
- 0,48s : TI-Nspire CX (révisions A-V) (32 bits : ARM9/ARMv5 @132MHz avec l'interpréteur MicroPython)
- 0,498s : NumWorks N0110 (32 bits : Cortex-M7/ARMv7 @216MHz)
- 0,53s : TI-Nspire CX CR4+ (révisions W+) (32 bits : ARM9/ARMv5
@156MHzoverclocké @216MHz via Nover avec l'interpréteur MicroPython) - 0,59s : Casio Graph 35/75+E (32 bits : SH4
@29,49MHzoverclocké @267,78MHz via Ftune2 avec l'interpréteur CasioPython) - 0,68s : TI-Nspire CX CR4+ (révisions W+) (32 bits : ARM9/ARMv5 @156MHz avec l'interpréteur MicroPython)
- 0,785s : NumWorks N0100 (32 bits : Cortex-M4/ARMv7 @100MHz)
- 0,79s : Casio Graph 35+E II (32 bits : SH4
@58,98MHzoverclocké @274,91MHz via Ftune3 avec l'interpréteur CasioPython) - 1,61s : HP Prime G1 (32 bits : ARM9/ARMv5 @400MHz)
- 1,86s : Casio Graph 35+E II (32 bits : SH4
@58,98MHzoverclocké @274,91MHz via Ftune3) - 2,15s : Casio Graph 90+E (32 bits : SH4
@117,96MHzoverclocké @270,77MHz via Ptune3) - 2,96s : Casio Graph 35+E II (32 bits : SH4
@58,98MHzoverclocké @274,91MHz via Ftune3 avec l'interpréteur KhiCAS) - 3,27s : Casio Graph 90+E (32 bits : SH4 @117,96MHz)
- 3,65s : Casio Graph 90+E (32 bits : SH4
@117,96MHzoverclocké @270,77MHz via Ptune3 avec l'interpréteur KhiCAS) - 3,73s : TI-83 Premium CE + module externe TI-Python (8 + 32 bits : eZ80 @48MHz + Cortex-M0+/ARMv6 @48MHz)
- 3,9s : Casio Graph 35+E II (32 bits : SH4 @58,98 avec l'interpréteur CasioPython)
- 3,93s : TI-83 Premium CE Edition Python (8 + 32 bits : eZ80 @48MHz + Cortex-M0+/ARMv6 @48MHz)
- 4s : Casio Graph 35/75+E (32 bits : SH4 @29,49MHz avec l'interpréteur CasioPython)
- 4,4s : TI-83 Premium CE + module externe TI-Python (8 + 32 bits : eZ80 @48MHz + Cortex-M0+/ARMv6 @48MHz avec firmware CircuitPython)
- 5,48s : Casio Graph 90+E (32 bits : SH4 @117,96MHz avec l'interpréteur KhiCAS)
- 9,21s : Casio Graph 35+E II (32 bits : SH4 @58,98MHz)
- 13,93s : Casio Graph 35+E II (32 bits : SH4 @58,98MHz avec l'interpréteur KhiCAS)
Mais contrairement à la plupart des langages historiques, le Python distingue les nombres entiers des nombres flottants. Voici donc un script pour tester les calculs entiers en Python :
- Code: Select all
try:from time import monotonic
except:pass
def hastime():
try:
monotonic()
return True
except:return False
def nodivisorin(n,l):
for k in l:
if n//k*k==n:
return False
return True
def isprimep(n):
t=hastime()
s,l,k=0 or t and monotonic(),[3],7
if n==2 or n==5:return True
if int(n)!=n or n//2*2==n or n//5*5==5:
return False
if n<k:return n in l
while k*k<n:
if nodivisorin(k,l):l.append(k)
k+=2+2*((k+2)//5*5==k+2)
r=nodivisorin(n,l)
return (t and monotonic() or 1)-s,r
L'appel
isprimep(10000019)
nous donne donc le classement suivant en calcul entier :- 0,42s : TI-Nspire CX (révisions A-V) (32 bits : ARM9/ARMv5
@132MHzoverclocké @222MHz via Nover avec l'interpréteur MicroPython) - 0,57s : TI-Nspire (32 bits : ARM9/ARMv5 overclocké
@120MHz@150MHz via Nover avec l'interpréteur MicroPython) - 0,58s : Casio Graph 35/75+E (32 bits : SH4
@29,49MHzoverclocké @267,78MHz via Ftune2 avec l'interpréteur CasioPython) - 0,581s : NumWorks N0110 (32 bits : Cortex-M7/ARMv7 @216MHz)
- 0,59s : Casio Graph 35+E II (32 bits : SH4
@58,98MHzoverclocké @274,91MHz via Ftune3 avec l'interpréteur CasioPython) - 0,62s : TI-Nspire CX (révisions A-V) (32 bits : ARM9/ARMv5 @132MHz avec l'interpréteur MicroPython)
- 0,63s : TI-Nspire CX CR4+ (révisions W+) (32 bits : ARM9/ARMv5
@156MHzoverclocké @216MHz via Nover avec l'interpréteur MicroPython) - 0,67s : TI-Nspire (32 bits : ARM9/ARMv5 @120MHz avec l'interpréteur MicroPython)
- 0,86s : Casio Graph 35+E II (32 bits : SH4
@58,98MHzoverclocké @274,91MHz via Ftune3) - 0,99s : TI-Nspire CX CR4+ (révisions W+) (32 bits : ARM9/ARMv5 @156MHz avec l'interpréteur MicroPython)
- 1,08s : Casio Graph 90+E (32 bits : SH4
@117,96MHzoverclocké @270,77MHz via Ptune3) - 1,17s : NumWorks N0100 (32 bits : Cortex-M4/ARMv7 @100MHz)
- 1,58s : Casio Graph 90+E (32 bits : SH4 @117,96MHz)
- 3,02s : Casio Graph 35+E II (32 bits : SH4 @58,98 avec l'interpréteur CasioPython)
- 4,39s : Casio Graph 35+E II (32 bits : SH4 @58,98MHz)
- 4,42s : HP Prime G2 (32 bits : Cortex-A7/ARMv7 @528MHz)
- 4,98s : Casio Graph 35/75+E (32 bits : SH4 @29,49MHz avec l'interpréteur CasioPython)
- 8,1s : TI-83 Premium CE + module externe TI-Python (8 + 32 bits : eZ80 @48MHz + Cortex-M0+/ARMv6 @48MHz)
- 9s : TI-83 Premium CE Edition Python (8 + 32 bits : eZ80 @48MHz + Cortex-M0+/ARMv6 @48MHz)
- 11,26s : TI-83 Premium CE + module externe TI-Python (8 + 32 bits : eZ80 @48MHz + Cortex-M0+/ARMv6 @48MHz avec firmware CircuitPython)
- 16,05s : HP Prime G1 (32 bits : ARM9/ARMv5 @400MHz)
- 19,06s : Casio Graph 35+E II (32 bits : SH4
@58,98MHzoverclocké @274,91MHz via Ftune3 avec l'interpréteur KhiCAS) - 22,77s : Casio Graph 90+E (32 bits : SH4
@117,96MHzoverclocké @270,77MHz via Ptune3 avec l'interpréteur KhiCAS) - 32,76s : Casio Graph 90+E (32 bits : SH4 @117,96MHz avec l'interpréteur KhiCAS)
- 91,71s : Casio Graph 35+E II (32 bits : SH4 @58,98MHz avec l'interpréteur KhiCAS)
Avant de conclure, une petite page de publicité pour la plus grande arnaque jamais vendue parmi les calculatrices graphiques en rayon scolaire :
Si les performances ont de l'importance pour toi, les meilleurs choix sont donc :
Citons également la Casio Graph 35+E II qui, munie des bons outils hors mode examen (CasioPython et Ftune3) s'en sort remarquablement bien par rapport à son prix, d'environ ~60€ seulement, sur lequel Casio te rembourse en prime 10€ pour tout achat à neuf d'ici le 30 septembre !
- la NumWorks N0110 pour les performances générales
- la TI-Nspire CX (révision A-V) pour le Python (hors mode examen uniquement )
- la HP Prime G2 pour le Python en mode examen
Citons également la Casio Graph 35+E II qui, munie des bons outils hors mode examen (CasioPython et Ftune3) s'en sort remarquablement bien par rapport à son prix, d'environ ~60€ seulement, sur lequel Casio te rembourse en prime 10€ pour tout achat à neuf d'ici le 30 septembre !
A très bientôt pour le classement final de rentrée 2019 à la fois pour les BAC 2020 et 2021+ !