2012-04-14 5 views
11

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

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 Linux 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) 

Я не могу понять, как Linux VM работает в тех же самых окон на самом деле быстрее, чем питон работает на тот же голый металл под окнами.

В чем отличие python от окон, которые он работает медленнее на голых ОС, чем в виртуальной машине под управлением Linux в одном окне?

  • Подробнее платформа для Windows Win7x64 32 бит питон работает на обеих платформах 32 бит Linux VM работает на платформе окон в VMWare
+0

Зависит от других процессов, которые работают одновременно. –

+2

Различные libc.* running * –

+5

Был ли Python запущен в VM и на Linux 64-bit? Я вижу, что версия для Windows была 32-разрядной. Убедитесь, что вы сравниваете яблоки с яблоками. – agf

ответ

7

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

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

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

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

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

  • Вы связываете различные реализации зависимостей Python, в частности libc, как указывает Ignacio Vazquez-Abrams.

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

+0

я воспроизвел его в 3 раза, прежде чем я написал это. Да, я не упоминал об этом. – boatcoder

3

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

+0

Нет, нет антивируса. – boatcoder

2

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

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

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

Смежные вопросы