Рассмотрим следующий фрагмент кода:PyPy JIT вызова оптимизации
class Duck:
def duck(self):
pass
ducks = [Duck() for i in range(10)]
for duck in ducks:
duck.duck() #<-----
Будет duck.duck() вызова динамически переданную (т.е. каждый раз, когда поиск метод будет сделано), или JIT сможет вычесть, что мы итерируем стабильный список уток и заменяем вызовы с помощью mem + offset?
Если да, то как я могу сам это увидеть (например, как проверить IR-код, если есть какая-либо или сгенерированная сборка); если нет, то почему?
Это трассировка JIT, поэтому цикл превратится в «проверьте, что тип« утка »-« Утка », а затем больше ничего не делает (метод встроен)». –