by critor » 30 Aug 2020, 18:42
Sur une suggestion de
cent20, nouveau script qui retourne à la fois le
heap disponible, et également le plus grand bloc contigu trouvé :
- Code: Select all
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)))
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.