Page 3 sur 3

Re: QCC 2020 épisode 4 : Python et tas (heap)

Message non luPosté: 09 Aoû 2020, 12:56
de redgl0w
Afyu a écrit:
redgl0w a écrit:
Afyu a écrit:Mais celui de la NumWorks n'existe pas, je crois. :troll:

https://www.numworks.com/fr/ressources/manuel/


Oui, il en existe également une version papier. J'ai même une version papier du manuel d'utilisation de la N0100 avec en dernière page la liste des améliorations prévues mais pas encore implantées. :)

Je crois aussi l'avoir eu avec le concours de la rentré (mais je pense l'avoir rangé, vu qu'il ne me sert pas trop)

Re: QCC 2020 épisode 4 : Python et tas (heap)

Message non luPosté: 09 Aoû 2020, 13:06
de Afyu
redgl0w a écrit:Je crois aussi l'avoir eu avec le concours de la rentré (mais je pense l'avoir rangé, vu qu'il ne me sert pas trop)


Exact. :) Mais c'est la nouvelle version. Il n'y a plus de section "améliorations à venir" à la fin :)

Re: QCC 2020 épisode 4 : Python et tas (heap)

Message non luPosté: 09 Aoû 2020, 13:24
de M4x1m3
parisse a écrit:J'ai fait une archive avec juste le repertoire external de Delta ici https://www-fourier.univ-grenoble-alpes.fr/~parisse/numworks/external.tgz

Merci beaucoup, mais je n'arrive pas à y accéder (403).

Re: QCC 2020 épisode 4 : Python et tas (heap)

Message non luPosté: 09 Aoû 2020, 13:27
de parisse
en effet, ca devrait etre bon maintenant, les droits n'etaient pas bons.

Re: QCC 2020 épisode 4 : Python et tas (heap)

Message non luPosté: 26 Aoû 2020, 08:58
de critor
critor a écrit:
parisse a écrit:Pour KhiCAS, il s'agit des valeurs par defaut, mais la taille du tas est configurable (depuis la configuration), sur la Numworks on peut atteindre une taille maximale de 64K.


Voilà c'est testé, précisé, le diagramme est mis à jour, et ma feuille de calcul des scores du classement également. Merci de m'avoir fait découvrir cette option bien sympathique. :)

Sur TI-Nspire par contre, cette option bien que présente semble ignorée. Peu importe ce que je précise entre 256K (par défaut) et 4M, mes scripts détectent toujours 1M de heap.

Est-ce que vous avez pu regarder ça, @parisse ? Merci.

Re: QCC 2020 épisode 4 : Python et tas (heap)

Message non luPosté: 26 Aoû 2020, 10:52
de parisse
Je viens de faire une mise a jour, je vous laisse tester si ca fonctionne!

Re: QCC 2020 épisode 4 : Python et tas (heap)

Message non luPosté: 26 Aoû 2020, 19:44
de critor
Merci.

J'ai retéléchargé à partir de https://www-fourier.univ-grenoble-alpes ... khicas.zip .

Mais désolé, ça ne semble rien changer. J'ai réglé le tas à 64K puis 4M, et selon les tests on reste à chaque fois sur du 1M :
Image

Re: QCC 2020 épisode 4 : Python et tas (heap)

Message non luPosté: 27 Aoû 2020, 07:52
de parisse
en effet, ca devrait etre bon maintenant, j'ai teste gc.mem_free() (vous pouvez faire ctrl r pour reexecuter la session une fois le parametre de tas modifie)

Re: QCC 2020 épisode 4 : Python et tas (heap)

Message non luPosté: 30 Aoû 2020, 15:01
de critor
Merci @parisse, ça semble bon. Je mets à jour dans ma banque de données, ce sera bien comptabilisé. :)

Re: QCC 2020 épisode 4 : Python et tas (heap)

Message non luPosté: 30 Aoû 2020, 18:42
de critor
Sur une suggestion de cent20, nouveau script qui retourne à la fois le heap disponible, et également le plus grand bloc contigu trouvé :
Code: Tout sélectionner
def size(o):
  t = type(o)
  s = t == str and 49 + len(o)
  if t == int:
    s = 24
    while o:
      s += 4
      o >>= 30
  elif t == list:
    s = 64 + 8*len(o)
    for so in o:
      s += size(so)
  return s

def mem(v=1):
  try:
    l=[]
    try:
      l.append(0)
      l.append(0)
      l.append("")
      l[2] += "x"
      l.append(0)
      l.append(0)
      while 1:
        try:
          l[2] += l[2][l[1]:]
        except:
          if l[1] < len(l[2]) - 1:
            l[1] = len(l[2]) - 1
          else:
            raise(Exception)
    except:
      if v:
        print("+", size(l))
      try:
        l[0] += size(l)
      except:
        pass
      try:
        l[3], l[4] = mem(v)
      except:
        pass
      return l[0] + l[3], max(l[0], l[4])
  except:
    return 0, 0

def testmem():
  m1, m2 = 0, 0
  while 1:
    t1, t2 = mem(0)
    if t1 > m1 or t2 > m2:
      m1 = max(t1, m1)
      m2 = max(t2, m2)
      input(str((m1,m2)))

Image

J'aurais plein de choses à dire encore, notamment sur CX II, mais ça m'embête dans chaque épisode Python d'avoir à censurer la partie CX II, soit l'essentiel des nouveautés.

Les scores sont en cours de finalisation.
C'est loin d'être aussi serré que l'année dernière sur le milieu de gamme, donc sauf mise à jour surprise plus rien ne devrait bouger niveau classement.