Вызовы функций Python очень медленные

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

Основная причина, по которой я спросил, состоит в том, что другие ответы, которые я видел, в основном ссылались на timeit, но это дало мне отрицательные числа, поэтому я переключился на это:

import timeit
import cProfile

def aaaa(idd):
    return idd

def main():
    #start = timeit.timeit()
    for i in range(9999999):
        a = 5
    #end = timeit.timeit()
    #print("1", end - start)

def main2():
    #start = timeit.timeit()
    for i in range(9999999):
        aaaa(5)
    #end = timeit.timeit()
    #print("2", end - start)

cProfile.run('main()', sort='cumulative')
cProfile.run('main2()', sort='cumulative')

и получил это для вывода

   ncalls  tottime  percall  cumtime  percall filename:lineno(functio,n)
        1    0.000    0.000    0.310    0.310 {built-in method exec}
        1    0.000    0.000    0.310    0.310 <string>:1(<module>)
        1    0.310    0.310    0.310    0.310 test.py:7(main)
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    2.044    2.044 {built-in method exec}
        1    0.000    0.000    2.044    2.044 <string>:1(<module>)
        1    1.522    1.522    2.044    2.044 test.py:14(main2)
  9999999    0.521    0.000    0.521    0.000 test.py:4(aaaa)

Для меня это говорит о том, что не вызов функции составляет 0,31 секунды, а ее вызов занимает 1,52 секунды, что почти в 5 раз медленнее. Но, как я уже сказал, я получил отрицательные числа с timeit, поэтому я хочу убедиться, что это на самом делеэто медленный.

Кроме того, насколько я понимаю, причина того, что вызовы функций такие медленные, заключается в том, что python должен искать, чтобы убедиться, что функция еще существует, прежде чем он сможет ее запустить или что-то еще? Нет ли способа просто сказать, что это нравится ... предположим, что все еще там, чтобы не выполнять ненужную работу, которая (по-видимому) замедляет его в 5 раз?

Ответы на вопрос(1)

Ваш ответ на вопрос