Насколько быстрее новая библиотека ввода-вывода Python 2.7 по сравнению с более ранними версиями?

1

Python 2.7 примечание по обновлению говорит:

Новая версия библиотеки io, переписанная в C для производительности.

Я немного играл с Python 2.7, но я не вижу прироста производительности:

>>> from timeit import Timer
>>> t = Timer('f = open("E:\\db.txt", "r"); f.read(); f.close()')
>>> t.timeit(10000)

И результат:

  • Python 2.6.5 - 12.879124022745913
  • Python 2.7 - 12.905614540395504

Я делаю это неправильно?

  • 0
    Попробуйте свои тесты построчно и char-by-char для большего разнообразия.
  • 0
    Да. Я попробовал несколько вещей, и Py3k, как правило, на два порядка медленнее. / Меня / спутать /
Показать ещё 1 комментарий
Теги:
python-2.7
io

1 ответ

4
Лучший ответ

Если вы посмотрите http://docs.python.org/library/io.html, метод open() в модуле io не используется по умолчанию для открытия файлов в python 2.x. Это было только в python 3.x, что делает open() использовать io.open().

Попытка:

from timeit import Timer
t = Timer('f = io.open("E:\\db.txt", "r"); f.read(); f.close()', 'import io')
t.timeit(10000)
  • 0
    К сожалению, я просматривал документы по Python 3.2. Похоже, я тоже неправильно понял предложение. Это библиотека ввода-вывода Python 3 (с Unicode в качестве кодека по умолчанию) была перенесена обратно в Python 2.7. IO по умолчанию в Python 2.x уже написан на C и имеет приличную производительность.
  • 0
    >>> t = Timer ('f = io.open ("E: \\ db.txt", "r"); f.read (); f.close ()', 'import io') -> Я получаю 30.724059342737746, похожий на Python 3.x

Ещё вопросы

Сообщество Overcoder
Наверх
Меню