Page 1 of 1

CP5 - Championnat des Pythons : mémoire de travail

Unread postPosted: 22 May 2018, 20:54
by critor
Championnat des Pythons 2018
Course des Pythons n°5
Mémoire de travail


Bienvenue au grand Championnat des Pythons 2018. Pour la rentrée 2018, trois modèles de calculatrices graphiques autorisées aux examens et concours proposent ou proposeront la programmation en langage Python :
  • NumWorks
  • HP Prime
  • Casio Graph 90+E

Aujourd'hui dans cette cinquième Course des Pythons, voyons ensemble ce que valent ces différentes solutions niveau mémoire de travail, c'est-à-dire l'espace mémoire exploitable pour l'exécution des scripts.

9544Sur NumWorks notre script mem.py nous révèle un espace de travail de 13,3 Kio :
Code: Select all
def mem():
  try:
    l = [0]
    while True:
      try:
        l = l + l[l[0]:]
      except:
        if l[0] < len(l)-1:
          l[0] = len(l)-1
        else:
          print("+", 4*len(l))
          l[0] = 4*len(l) + mem()
          break
  except:
    return 0
  return l[0]

Sur Casio Graph 90+E le résultat du même script mem.py n'a absolument rien à voir, avec 992 Kio.


Enfin sur HP Prime, on dispose de 17,95 Mio d'espace de travail, normalement entièrement utilisables par les scripts Python.

Toutefois, attention au fait que la machine souffre de plusieurs fuites de mémoire, et que la consommation significative de mémoire ne rapprochera que d'une seule chose : du moment où il n'y aura pas d'autre choix que de faire reset.

Image

A bientôt pour une autre Course des Pythons ! ;)

Re: CP5 - Championnat des Pythons : mémoire de travail

Unread postPosted: 28 Oct 2018, 13:17
by critor
Mise à jour du script de test de la quantité de mémoire de travail disponible.

Je me conforme aux tailles constatées en Python sur ordi avec la fonction sys.getsizeof() dont nous ne disposons pas sur calculatrice :
  • 64 octets pour un tableau vide
  • 8 octets par nombre entier supplémentaire dans le tableau
Code: Select all
def mem():
  try:
    l=[]
    try:
      l+=[0]
      while True:
        try:
          l=l+l[l[0]:]
        except:
          if l[0]<len(l)-1:
            l[0]=len(l)-1
          else:
            raise(Exception)
    except:
      print("+",len(l))
      return 64+8*len(l)+mem()
  except:
    return 0


Téléchargement direct :

Les estimations sont donc différentes mais normalement plus exactes, et ne changent pas le rapport de force :
  1. HP Prime G2 avec 17,95Mo
    Image
  2. Casio Graph 90+E avec 2,05Mo / 1,95Mio
    Image
  3. calculatrice NumWorks avec 29,86Ko / 29,16Kio
    9871
  4. simulateur NumWorks en ligne avec 14,51Ko / 14,17Kio (mais la différence vient peut-être du fait que je l'ai fait tourner sur une machine 64-bits)
    Image

Le script a été révisé dans le contexte de la 1ère présentation publique du module TI-Python pour TI-83 Premium CE, aux journées APMEP à Bordeaux :
viewtopic.php?t=21871&p=235639#p235639

Il a bien été testé avec le module en question sur le stand de TI, et nous savons où l'insérer dans ce classement. ;)
Mais nous n'avons pas encore eu de réponse à notre demande d'utiliser les informations et photos collectées sur le stand dans des articles publics.

Re: CP5 - Championnat des Pythons : mémoire de travail

Unread postPosted: 05 Dec 2018, 14:06
by critor
Voilà, je cesse de vous faire languir, voici enfin le classement amélioré des mémoires de travail Python incluant le module de TI à venir : :D
viewtopic.php?f=41&t=22050