Page 2 sur 3

Re: QCC 2019 épisode 6 : performances & Python

Message non luPosté: 08 Sep 2019, 08:27
de parisse
Voici un programme implementant le test de primalite avec test modulo 6:
Code: Tout sélectionner
def isprimep(x):
    if x==2 or x==3 or x==5:
        return True
    if int(x)!=x or x%2==0 or x%3==0 or x%5==0:
        return False
    for k in range(6,x,6):
        if k*k>x:
            return True
        if x % (k+1) == 0 or x%(k+5)==0:
            return False
    return False

Sur l'emulateur Mac de la Graph 90+e,
Code: Tout sélectionner
isprimep(10000019)=>,

renvoie un temps d'execution de 0.49 secondes, donc sur une vraie Graph 90+e non overclockee, cela devrait prendre environ la moitie, i.e. on passe de l'avant-derniere place a 24secondes a la premiere place avec 100 fois moins de temps d'execution.
Bien sur les autres modeles iront aussi beaucoup plus vite avec un algorithme plus efficace. Mais la morale de l'histoire c'est quand meme qu'il faut relativiser ce classement de performances, ce qui compte avant tout c'est de choisir un algorithme efficace ou de pouvoir utiliser un algorithme efficace deja programme, et dans le domaine de l'arithmetique, KhiCAS est bien meilleur que les implementations Python natives.

Re: QCC 2019 épisode 6 : performances & Python

Message non luPosté: 08 Sep 2019, 14:43
de critor
Comme déjà dit une année précédente, les performances ne comptent vraiment pour pas grand chose dans le classement QCC.
Pour la grande majorité des calculs/algos de lycée la calculatrice fournit la réponse avant même que l'utilisateur ait le temps de relâcher la touche de validation, donc il est peu pertinent de discriminer là-dessus.

Et de toutes façons, si je mets KhiCAS au classement QCC 2019 en cours de rédaction, ce sera en bonus et donc pour appuyer sur ce qu'il apporte/ajoute. Pas ce que j'estimerais qu'il remplace en moins bien. :)

Par contre, je trouve qu'il reste pertinent d'informer sur les extrêmes et donc ici notamment sur les performances remarquablement désastreuses de la Casio fx-CP400+E, avec plusieurs petits algos de BAC qui mettent des minutes à mouliner la réponse quand tous les autres modèles ont terminé depuis longtemps.
Et le pire c'est que le moteur de calcul fx-CP400+E ne travaille que sur des flottants de 31 bits significatifs. Qu'est-ce que ça aurait été avec 40 bits significatifs comme sur les TI-82/83/84 et Casio Graph...

Re: QCC 2019 épisode 6 : performances & Python

Message non luPosté: 08 Sep 2019, 15:18
de parisse
critor a écrit:Comme déjà dit une année précédente, les performances ne comptent vraiment pour pas grand chose dans le classement QCC.
Pour la grande majorité des calculs/algos de lycée la calculatrice fournir la réponse avant même que l'utilisateur ait le temps de relâcher la touche de validation, donc il est peu pertinent de discriminer là-dessus..

Je suis complement d'accord, les performances brutes ne seront pas tres importantes au lycee. Mais il y a quand meme un topic la-dessus et les lecteurs, en voyant le classement et les temps affiches pour KhiCAS sur le test perfomances en entiers avec votre programme, risquent d'en tirer une mauvaise impression et du coup pourraient ne meme pas l'essayer. Je testerai demain avec une vraie calculatrice le programme isprimep que j'ai donne ci-dessus (celui modulo 6), je pense que le rapport des temps de calcul entre l'interpreteur KhiCAS et l'interpreteur Python natif ne doit pas etre aussi grand qu'avec le votre et qu'il est plus representatif des performances a attendre en arithmetique entiere. Sur PC j'observe en general des rapports proche de 4, alors qu'ici on est a 20... Or un rapport 4, je ne pense pas que ca derange grand monde, surtout si on y gagne en confort (debugger/editeur/etendue du catalogue de commandes integrees).

Re: QCC 2019 épisode 6 : performances & Python

Message non luPosté: 08 Sep 2019, 15:29
de parisse
Sur l'emulateur casio, j'observe un rapport 6 environ pour isprimep(10**10+19) (KhiCAS 31s vs microPython 5s).
La commande builtin de KhiCAS met quant a elle 0.7s.

Re: QCC 2019 épisode 6 : performances & Python

Message non luPosté: 08 Sep 2019, 19:46
de cent20
≈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)


Quand on lit ceci on pourrait presque croire qu’il suffit d’attendre 13 minutes pour avoir un résultat, 🙈
Alors que non, en fait vous n’aurez aucun résultat, ni dans 13 minutes ni jamais en fait...
Mais si vous ne nous croyez pas, commencez par attendre 13 minutes après avoir soigneusement recopié le script à l’encre rose au dos de la calculatrice.

Re: QCC 2019 épisode 6 : performances & Python

Message non luPosté: 08 Sep 2019, 19:53
de critor
cent20 a écrit:Mais si vous ne nous croyez pas, commencez par attendre 13 minutes après avoir soigneusement recopié le script à l’encre rose au dos de la calculatrice.

En effet ce serait une belle innovation, la saisie de programmes par simple transmission digitale au dos de la calculatrice; surtout pour des machines que l'on tient souvent dans la main en cours d'utilisation.

Faut envoyer ton idée à Lexibook : :troll:

Re: QCC 2019 épisode 6 : performances & Python

Message non luPosté: 08 Sep 2019, 20:02
de cent20
Je l’aurais fait avec plaisir mais je n’ai pas de stylo à encre rose. Avec regrets, je passe mon tour...

Re: QCC 2019 épisode 6 : performances & Python

Message non luPosté: 08 Sep 2019, 20:05
de critor
Et moi je manque de place dans les 3 lignes qu'ils proposent pour leur dire tout ce que je pense de leur produit aussi exceptionnel. :troll:
Sérieusement, je n'ai pas eu la distinction d'avoir un produit ne serait-ce que comparable dans les années 1990.

Re: QCC 2019 épisode 6 : performances & Python

Message non luPosté: 09 Sep 2019, 00:04
de DoOmnimaga
LOL @ fx-cp400

Re: QCC 2019 épisode 6 : performances & Python

Message non luPosté: 09 Sep 2019, 07:38
de parisse
@critor: je regarde les benchmarks de la fonction seuil en "mode exact", et je trouve que ca meriterait un commentaire. En effet, les lecteurs risquent de croire que l'evaluation est toujours faite avec des rationnels, alors que ca n'est evidemment pas le cas pour tous les modeles. Comparer la HP Prime ou la TI Nspire ou la Casio Classpad qui calculent avec des rationnels avec la Numworks ou les Casio (ou probablement les TI83) qui calculent en flottants risque de tromper le lecteur non averti. Et il importe de preciser que microPython fait aussi ce calcul avec des flottants.