Python | эффективность и производительность

Допустим, я собираюсь сохранить 100 чисел с плавающей запятой в списке, запустив один скрипт, наиболее вероятно, что для обработки потребуется некоторое количество памяти. Так что, если этот код выполняется каждый раз, как требование приложения, будут потери производительности, поэтому мой вопрос заключается в том, как сохранить эффективность, чтобы повысить производительность.

Код макета:

def generate_lglt():
    float1, float2 = 27.2423423, 12.2323245
    lonlats = []
    for val in range(100, 0, -1):
        lonlats.append(random.uniform(float1, float2))
        lonlats.append(random.uniform(float1, float2))
        lonlats.append(random.uniform(float1, float2))
        lonlats.append(random.uniform(float1, float2))
        lonlats.append(random.uniform(float1, float2))
    print lonlats

Благодарю.

2 ответа

Решение

Если generate_lglt() будет вызываться много раз, вы можете не создавать один и тот же диапазон (100,0,-1) при каждом вызове кода. Вы можете кэшировать этот сгенерированный диапазон где-нибудь и использовать его снова и снова.

Также, если вы собираетесь выходить из цикла for без завершения каждой итерации, используйте xrange вместо range.

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

  1. Напишите свою программу, чтобы она полностью работала.
  2. Разработайте тесты, чтобы убедиться, что ваша программа правильная.
  3. Решите, будет ли ваша программа слишком медленной.
    • Есть большая вероятность, что вы уйдете с этого шага.
  4. Разрабатывайте тесты производительности, которые реально запускают вашу программу.
  5. Профилируйте код в его реалистичных тестах производительности, используя cProfile модуль.
  6. Выясните, какие алгоритмические улучшения могут улучшить производительность вашего кода.
    • Обычно это самый лучший способ улучшить скорость.
  7. Если вы используете лучший алгоритм для работы, выполните микрооптимизацию.
    • Переписывание критических частей в C (возможно, с использованием Cython) часто более эффективно, чем микрооптимизация в Python.
Другие вопросы по тегам