Почему python намного медленнее на окнах?

Я узнал о пистонах сегодня, и поэтому решил посмотреть, какими были мои различные условия. Я запустил pistones на моем ноутбуке, который запускает окна на голом металле и получил эти результаты.

Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from test import pystone
>>> for i in range(0,10):
...   pystone.pystones()
...
(1.636334799754252, 30556.094026423627)
(2.1157907919853756, 23631.82607155689)
(2.5324817108003685, 19743.479207278437)
(2.541626695533182, 19672.4405231788)
(2.536022267835051, 19715.915208695682)
(2.540327088340973, 19682.50475676099)
(2.544761766911506, 19648.20465716261)
(2.540296805235016, 19682.739393664764)
(2.533851636391205, 19732.804905346253)
(2.536483186973612, 19712.3325148696)

Затем я запустил его на некоторых наших виртуальных машинах Linux и получил в 2,7-3,4 раза лучшую производительность. Поэтому я запустил VMware VMware VM на своем ноутбуке и повторил тот же тест и получил следующие результаты:

Python 2.7.2+ (default, Oct  4 2011, 20:03:08) 
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> for i in range(0,10):
...   pystone.pystones()
... 
(1.75, 28571.428571428572)
(1.17, 42735.042735042734)
(1.6600000000000001, 30120.48192771084)
(1.8399999999999999, 27173.913043478264)
(1.8200000000000003, 27472.52747252747)
(1.8099999999999987, 27624.30939226521)
(1.3099999999999987, 38167.938931297744)
(1.7800000000000011, 28089.88764044942)
(1.8200000000000038, 27472.527472527414)
(1.490000000000002, 33557.04697986573)

Я не могу понять, как виртуальная виртуальная машина, работающая внутри одного окна, на самом деле FASTER, чем python, работающий на одном и том же голосе под окнами.

Что такое python в Windows, что он работает медленнее на ОС, чем в виртуальной машине под Linux в том же поле?

  • Подробнее Windows-платформа Win7x64 32-разрядный python, работающий на обеих платформах 32-разрядная Linux-консоль, работающая на платформе Windows в VMWare

Ответ 1

Я не могу ответить на ваш вопрос, однако рассмотрим этот список вещей, которые могут иметь значение:

  • Вы используете разные версии Python. "2.7.2+" означает, что ваш linux Python был создан из контрольной проверки версии, а не для версии.

  • Они были скомпилированы с различными компиляторами (и, предположительно, значимо разными уровнями оптимизации).

  • Вы не упомянули о том, чтобы воспроизвести это много. Разумеется, это была случайность, если вы этого не сделали.

  • Ваша виртуальная машина может быть неточной.

  • Вы связываете различные реализации зависимостей Python, особенно libc, как указывает Игнасио Васкес-Абрамс.

  • Я не знаю, каковы фактические контрольные точки pystone, но многие вещи работают по-другому - такие вещи, как обработка Unicode или диск IO, могут быть зависящими от системы факторами.

Ответ 2

Запускаете ли вы антивирусное программное обеспечение в этом окне Windows? Возможно, это могло бы объяснить это. Мне лично нравится добавлять Python, Cygwin и каталог моих источников в список исключений для антивируса - я думаю, что получаю небольшое, но заметное ускорение. Возможно, это объясняет ваши результаты.

Ответ 3

Имел подобную проблему в Windows 10 - это было из-за защитника Windows.

Мне пришлось исключить каталоги python и обработать настройки окон и перезагрузить компьютер.

До этого: мне нужно было подождать ~ 20 секунд, чтобы запустить любой код python - теперь это миллисекунды.