Вызов функции cProfile.run против сложности
Когда я звоню cProfile.run('myFunction1')
возвращается с несколькими вызовами функций.
Я хотел бы сравнить различные версии myFunction и найти наиболее эффективную (например, с наименьшей сложностью).
Какая связь между function calls
и complexity
?
Что описывают вызовы функций?
Если у меня есть две функции, является ли функция с наименьшим числом вызовов функций наиболее эффективной?
1 ответ
Количество вызовов функций - это как раз то, что означает: количество вызовов (под) функций. Нет строгой корреляции между вызовами func и сложностью. Чтобы найти наиболее эффективную реализацию, вы должны попытаться сопоставить вашу функцию с различными наборами аргументов и синхронизировать ее. Использование модуля timeit.
Вычисление сложности функции - слишком широкий аргумент для одного ответа. Это зависит от самого алгоритма и сложности вызываемых им подфункций.
Здесь для больше: https://en.wikipedia.org/wiki/Analysis_of_algorithms