Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Скорость Python 32 против 64-битной проблемы с Windows

Автор вопроса: MartlarkОтветов: 3

У меня были проблемы с производительностью при перемещении приложений между 32-битной Windows 7 и 64-битной Windows Server 2008, обе с одинаковыми процессорами. Я написал тривиальную программу для проверки производительности распределения памяти, чтобы увидеть разницу. Это показывает, что создание списков на 64-битных окнах занимает почти в 10 раз больше времени, чем на 32-битных окнах. Использование python 2.6.5 на 32 и 2.6.6 на 64. Что может быть причиной проблемы? Я написал небольшую программу на 'c', чтобы сделать то же самое, и она показала, что 64-битный сервер работает быстрее. Так что же происходит?

#silly python memory allocation test
from datetime import datetime
import random

d = datetime.now()
listo = [1] * 300000
del listo
print datetime.now()-d
d = datetime.now()
listo = [1] * 3000000
del listo
print datetime.now()-d
d = datetime.now()
listo = [1] * 30000000
print datetime.now()-d

результат на 32

0:00:00.002000
0:00:00.024000
0:00:00.166000

результат на 64

0:00:00.031000
0:00:00.156000
0:00:02.672000

Есть ли какая-то нерешенная проблема с Python и производительностью памяти в 64-битных окнах?

64 Установка Windows 2008 R2 Server

4 процессора, 16 ГБ памяти, 20 ГБ диска C, сеть 10 ГБ/с Xeon X5570 @ 2,93 ГГц

32 ПК с Windows 7

2 ЦП, 2 ГБ памяти, диск C 500 ГБ, сеть 1 Гбит/с Core 2 duo @ 3,00 ГГц

  • Старайтесь использовать лучшее время, например docs.python.org/library/timeit.html. . Спасибо eat 22.03.2011
  • Я только что использовал timeit для трех ваших примеров в 64-разрядной версии Windows 7 с Python 2.6.5. Мне пришлось добавить del, чтобы он не сокращал фактическое создание. Мои времена очень хорошо совпадают с вашими 32-битными временами. Насколько быстр ваш компьютер и сколько у вас оперативной памяти? Justin Peel 22.03.2011

pythonwindowsperformance32bit-64bit

Ответы

Ответ 1 · рейтинг 2 · nils

Я не знаю, почему это так долго, но вы должны ожидать немного больше времени, потому что в этом примере программа выделяет двойную память в 64-битном режиме, как и в 32-битном режиме, поскольку python использует 32/64-битные указатели в его списках.

Это может отличаться в C, когда вы все еще используете 32-битные типы данных.

Ответ 2 · рейтинг 2 · Martlark

Проблема вызвана использованием программного обеспечения виртуальной машины на сервере Windows.

Ответ 3 · Knut Angstrom

У меня была еще одна проблема с Python 2.7 и 64-битной версией. Я запускаю программу, которая в 32-битном Python вызывала переполнение памяти на меньшем компьютере. Меня интересовало, будет ли использоваться моя большая оперативная память. И, конечно, это было. Максимум до 10 Гб и машина зависла. Пришлось отключить питание и перезагрузить компьютер.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы