Что быстрее в Python, “в то время как” или “для xrange”

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

, К сожалению, я не имею решения, но предложил бы (если Вы уже не имеете)

  1. Выполнение FileMon, чтобы видеть, ищет ли установщик определенные файлы, которые больше не являются там - это может дать некоторый ключ к разгадке.

  2. Болезненный, но попытка, удаляющая другие приложения, основанные на оболочке VS (например, 2005) сначала.

5
задан SilentGhost 4 September 2009 в 10:55
поделиться

7 ответов

Я уверен, что версия , а работает медленнее. Python должен будет искать операцию добавления для целочисленного объекта на каждом повороте цикла и т. Д., Это не чистый C только потому, что он выглядит так!

И если вам нужна питоническая версия точно указанного выше, используйте:

print " ".join(str(i) for i in xrange(10))

Edit: Мои тайминги выглядят так. Это просто глупый цикл без печати, просто чтобы показать вам, сколько стоит написание «i + = 1» и т. Д. В Python.

$ python -mtimeit "i=0" "while i < 1000: i+=1"
1000 loops, best of 3: 303 usec per loop
$ python -mtimeit "for i in xrange(1000): pass"
10000 loops, best of 3: 120 usec per loop
15
ответ дан 18 December 2019 в 05:33
поделиться

Какая разница? Шутки в сторону. Если вы хотите знать, используйте пакет timeit (вы можете вызвать его из командной строки с помощью -m).

Но это не имеет никакого значения, потому что разница незначительна. И вообще, Python - это не тот язык, который вы выбираете, если хотите скорости.

15
ответ дан 18 December 2019 в 05:33
поделиться

Первый.

Вы имеете в виду, быстрее развиваться, не так ли?

PS: Это не так. Дело в том, что в наши дни машины настолько быстры, что бессмысленно размышлять над микрооптимизациями до выявления узких мест с помощью тщательного профилировщика.

3
ответ дан 18 December 2019 в 05:33
поделиться

Если ваша программа слишком медленная, попробуйте использовать psyco .

Не беспокойтесь о типе микрооптимизации в вашем вопросе. Напишите вашу программу так, чтобы ее можно было сопровождать (включая следующий стандартный стиль Python, чтобы другие программисты могли ее легче читать).

0
ответ дан 18 December 2019 в 05:33
поделиться

Они оба , чтобы избежать: -)

В общем, каждый когда я вижу итерацию по числам, я вижу некоторый непифонический код, который можно было бы лучше выразить с помощью итераций по спискам или генераторам.
На самом деле я сказал «питонический», но все дело в читабельности . Использование идиоматического кода повысит удобочитаемость и, в конечном итоге, производительность, поскольку компилятор лучше знает, как его оптимизировать.

1
ответ дан 18 December 2019 в 05:33
поделиться

Что ж, если вам нужна эффективность в числовом коде, вам следует использовать numpy и scipy . Интеграцию можно быстро записать как numpy.sum (numpy.arange (10))

0
ответ дан 18 December 2019 в 05:33
поделиться

В Python более короткая и ясная версия всегда лучше. Если я не ошибаюсь, функции range и xrange не являются родными, если вы попробуете xrange (sys.maxint + 1), вы получите ошибку переполнения.

Кроме того, для чего, черт возьми, это может быть полезно? Если вы просто печатаете 10 чисел, то, несомненно, удобочитаемость в тысячу раз больше - и я не думаю, что вы собираетесь печатать более миллиона чисел ...

-1
ответ дан 18 December 2019 в 05:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: