Я попытаюсь обратиться к вашим пунктам 1 и 2 и вашим первым 3 пунктам, но не по порядку.
Третий пункт говорит: «Предположим, алгоритм и код Python уже оптимальны».Когда код находится в этом состоянии, если брать образцы стека (, как указано здесь ), образцы показывают точно, что делает программа, с точки зрения времени, и, кажется, нет ничего, что можно было бы улучшить безизменение языка.Однако, поскольку вы знаете, как он тратит свое время, вы знаете, какой алгоритм низкого уровня (который может состоять из более чем одной функции, а не просто горячей точки) мог бы выиграть, если его заставили занимать меньше времени, то есть преобразовать в C.
Что касается пункта 1, этот метод показывает, какие части кода получат выгоду от преобразования в C, и они могут быть или не быть горячими точками.(Первое, что приходит на ум, - это какая-либо рекурсивная функция или набор функций. Или небольшая группа функций, которые вместе выполняют какую-то задачу, например, альпинист.)
Относительно пункта 2,любой код, который не отображается в исправном проценте выборок из стека или который явно не принесет пользы при преобразовании в C, такой как ввод-вывод.
Что касается первого и второго пунктов маркера, я быСогласитесь, что измерение - это не основная цель, а побочный продукт процесса поиска кода для оптимизации.Представление таких измерений также не относится к делу.
Я был в подобных ситуациях, за исключением не между python и C, но между C и аппаратными средствами. **
Просто для примера, еслиобщее время выполнения составляет 10 секунд, а алгоритм находится в стеке примерно 50% времени, тогда он отвечает примерно за 5 из 10 секунд.Если преобразование алгоритма в C даст 10-кратное ускорение, то эти 5 секунд сократятся до 0,5 секунд, поэтому общее время сократится до 5,5 секунд.(Грубо говоря, более важно добиться сокращения времени, чем точно знать заранее, насколько он будет большим.) Обратите внимание, что в этот момент весь процесс может быть повторен, и может иметь смысл преобразовать что-то еще в C.Вы можете остановить этот процесс, когда примеры показывают, что код Python делает то, что хорошо, а код C делает то, что хорошо.
** Например, математика с плавающей точкой, библиотека против чипа илиграфика, рисование текста и полигонов.