Почему вызовы методов Ruby особенно медленны (по сравнению с другими языками)?

Я пытаюсь прочитать о производительности Ruby и наткнулся на этот поток SO , где в одном из ответов упоминается, что «вызовы методов, одна из самых распространенных операций в Ruby, являются особенно медленно ».

Другой поток упоминает, что« Он выполняет «поздний поиск» для методов, чтобы обеспечить гибкость. Это немного замедляет его. Он также должен запоминать имена для каждого контекста, чтобы разрешить eval, поэтому его кадры и вызовы методов выполняются медленнее »

. Может ли кто-нибудь более подробно объяснить, почему вызовы методов Ruby особенно медленны, и уточнить второй поток? Я не совсем уверен, что такое поздний поиск и почему он медленный, и я не знаю, что означают имена для каждого контекста или как они связаны с кадрами и вызовами методов.

Мое (возможно, неправильное) понимание состоит в том, что, поскольку методы могут быть добавленным или измененным во время выполнения, интерпретатор Ruby никогда не может «вспомнить», как запускать конкретный метод, поэтому ему приходится искать метод каждый раз, когда программа выполняется, и именно это подразумевается под медленными вызовами методов. Но исправления и дополнительные технические объяснения были бы замечательными.

22
задан Community 23 May 2017 в 12:30
поделиться