Учебники по оптимизации нетривиальных приложений Python с расширениями C или Cython

Первый метод:

Выберите симулятор и нажмите кнопку « команда + s ». Снимок экрана сохранен на рабочем столе.

Второй метод:

Выберите симулятор и перейдите к « Файл> Новый снимок экрана ». Снимок экрана сохранен на рабочем столе.

25
задан gotgenes 12 April 2011 в 03:11
поделиться

2 ответа

Точки 1 и 2 являются просто основным правилом оптимизации. Я был бы очень удивлен, если бы было какое-то учебное пособие, которое вы ищете. Может быть, поэтому вы не нашли ни одного. Мой короткий список:

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

Просто начните с профилирования вашего кода Python с помощью обычных инструментов Python . Найдите, где ваш код должен быть оптимизирован. Затем попробуйте оптимизировать его с помощью Python. Если это все еще слишком медленно, попытайтесь понять, почему. Если это связано с IO, вряд ли C-программа будет лучше. Если проблема возникла из-за алгоритма, маловероятно, что C будет работать лучше. На самом деле «хорошие» случаи, когда C может помочь, довольно редки, время выполнения не должно быть слишком далеко от того, что вы хотите (например, в 2–3 раза), структура данных проста и выиграет от представления низкого уровня, и вы действительно, действительно нужно это ускорение. В большинстве других случаев использование C вместо Python будет неудобной работой.

Действительно, довольно редко вызов кода C из python делается с учетом производительности в качестве основной цели. Чаще всего цель состоит в том, чтобы связать Python с некоторым существующим кодом на C.

И, как сказал другой автор, вам, вероятно, лучше посоветовать использовать Cython.

Если вы все еще хотите написать модуль C для Python, все необходимое находится в официальной документации .

9
ответ дан 28 November 2019 в 21:52
поделиться

Для пунктов 1 и 2 я бы использовал профилировщик Python, например cProfile . См. здесь для быстрого обучения.

Если у вас уже есть программа на Python, для пункта 3 вы можете рассмотреть возможность использования Cython . Конечно, вместо того, чтобы переписывать на C, вы можете придумать алгоритмическое улучшение, которое увеличит скорость выполнения.

4
ответ дан 28 November 2019 в 21:52
поделиться
Другие вопросы по тегам:

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