Каковы риски (если таковые имеются) встраивания Psyco в мой проект? - PullRequest
2 голосов
/ 17 сентября 2009

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

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

Я делаю это так:

@psyco.proxy
def my_slow_function(xxx):

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

  • Существует ли риск того, что при этом будет использовано значительно больше памяти
  • Есть ли другие проблемы, с которыми мы могли бы столкнуться при добавлении этого компонента в нашу давно установленную библиотеку?

К вашему сведению, платформа - это Python 2.4.4 на Windows 32bit XP

ОБНОВЛЕНИЕ: Кажется, что основной потенциальный риск связан с тем, что программе требуется больше памяти для запуска, чем до добавления psyco, поэтому в идеале я хотел бы найти способ узнать, сильно ли добавление psyco изменяет требования к памяти для система.

Ответы [ 2 ]

3 голосов
/ 17 сентября 2009

Почему бы не попробовать его профилировать? Psyco имеет довольно подробную запись объект:

использование памяти: x + kb

Текущее представление Psyco о том, сколько памяти потребляется для испускаемого машинного кода и вспомогательных структур данных. Это приблизительная оценка накладных расходов памяти (знак + должен напоминать вам, что эта цифра сильно недооценена). Используйте эту информацию для настройки пределов памяти (раздел 3.2.2).

Обратите внимание, что использование памяти настраивается :

memorymax

Остановитесь, когда память, используемая Psyco, достигнет предела (в килобайтах). Это ограничение включает объем памяти, использованный до запуска этого профилировщика.

2 голосов
/ 17 сентября 2009

Psyco - это JIT-компилятор. Если ваша функция не имеет состояния, то откатов почти не должно быть, кроме увеличения памяти.

...