LINUX.ORG.RU

Python, Память

 


0

1

Проверял тут размер python-объектов и получил следующие результаты:

Python 2.7.3rc2 (default, Apr 22 2012, 22:30:17)

[GCC 4.6.3] on linux2

>>> a=""
>>> a.__sizeof__() 
37 
>>> a="a" 
>>> a.__sizeof__() 
38 
>>> a="abc" 
>>> a.__sizeof__() 
40
>>> a=1
>>> a.__sizeof__()
24

Python 3.2.3 (default, Jun 21 2012, 11:32:57)

[GCC 4.5.3] on linux2

>>> a="" 
>>> a.__sizeof__() 
60 
>>> a="a" 
>>> a.__sizeof__() 
64 
>>> a="abc" 
>>> a.__sizeof__() 
72
>>> a=1
>>> a.__sizeof__()
28

Это на разных машинах, обе x86_64. Может, кто подскажет с чем это может быть связано?



Последнее исправление: Dude (всего исправлений: 1)

Python 2.7.3rc2 (default, Apr 22 2012, 22:30:17) 
[GCC 4.6.3] on linux2
>>> print('\n'.join(str([x.__sizeof__(), x]) for x in ['', 'a', b'a', u'a', r'a', 0, 1, 1.1, True, False, None]))
[37, '']
[38, 'a']
[38, 'a']
[56, u'a']
[38, 'a']
[24, 0]
[24, 1]
[24, 1.1]
[24, True]
[24, False]
[16, None]

Python 3.3.0 (default, Sep 29 2012, 11:14:25) 
[GCC 4.7.2] on linux
>>> print('\n'.join(str([x.__sizeof__(), x]) for x in ['', 'a', b'a', u'a', r'a', 0, 1, 1.1, True, False, None]))
[49, '']
[50, 'a']
[34, b'a']
[50, 'a']
[50, 'a']
[24, 0]
[28, 1]
[24, 1.1]
[28, True]
[24, False]
[16, None]
>>>
anonymous
()

А что тебе конкретно сказать?

Нужный ответ подчеркнуть: Объекты разных типов Объекты разных версий python(2,3) Строковые объекты разной длинны

greek_31 ★★
()

В общем, сверху у тебя не юникод по дефолту, снизу юникод, поэтому такая разница. В 3.3 юникодные строки сжали немного.

anonymous
()
Ответ на: комментарий от anonymous

Вроде похоже. И там и там - utf. Грешу на флаг

wide-unicode Enable wide Unicode implementation which uses 4-byte Unicode

но двойка тоже с ним собрана и результат таки разный.

Dude
() автор топика
Ответ на: комментарий от anonymous

От слова midi или слова мидии?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.