Что нового в Python 3.1
Изменения в языке
Некоторые небольшие изменения внесены в ядро языка программирования Python:
Тип int() получил метод bit_length, который возвращает число бит, необходимых для двоичного представления его аргумента:
>>> n = 37 >>> bin(37) '0b100101' >>> n.bit_length() 6 >>> n = 2**123-1 >>> n.bit_length() 123 >>> (n+1).bit_length() 124
(Внесли Fredrik Johansson и Victor Stinner; issue 3439.)
Целые числа теперь хранятся внутренне по базе 2**15, либо 2**30, база определяется при билде. Первоначально, целые всегда сохранялись по базе 2**15. Использование базы 2**30 дало значительное улучшение производительности на 64-битных машинах, результаты тестов производительности на 32-битных машинах неоднозначны. Поэтому на 64-битных машинах по умолчанию база устанавливается 2**30, и 2**15 - на 32-битных. На Unix появилась новая опция настройки: –enable-big-digits, которая может использоваться для замены значения по умолчанию.
Помимо улучшения производительности, это изменение незаметно для конечных пользователей, за одним исключением: для целей тестирования и отладки введена structseq sys.int_info, предоставляющая информацию о внутреннем формате, номер бит на цифру и размер в байтах C-типа, используемого для хранения каждой цифры:
>>> import sys >>> sys.int_info sys.int_info(bits_per_digit=30, sizeof_digit=4)
(Внёс Mark Dickinson; issue 4258.)
Оптимизации
Основные добавленные улучшения эффективности:
Новая библиотека ввода/вывода (определена в PEP 3116) была по большей части написана на Python и быстро показала, что является узким местом в Python 3.0. В Python 3.1 библиотека ввода/вывода была полностью переписана на C и работает от 2 до 20 раз быстрее, в зависимости от решаемой задачи. Версия на чистом Python осталась доступна для экспериментальных целей в модуле _pyio.
(Внесли Amaury Forgeot d’Arc и Antoine Pitrou.)
Новый флаг конфигурации --with-computed-gotos разрешает более быстрый механизм диспетчеризации кодов операции на тех компиляторах, которые это поддерживают. Отмечено увеличение скорости до 20%, в зависимости от системы и компилятора.
(Внёс Antoine Pitrou, issue 4753.)
По материалам статьи на docs.python.org
Перевод ООО «Комтет» - Python-хостинг