Подтвердить что ты не робот

Сколько стоит вызов метода в .net

Какова относительная стоимость выполнения вызова метода по встроенному коду?

4b9b3361

Ответ 1

Это будет зависеть от многих вещей

  • Подходит ли JIT для вас.
  • Будет ли он виртуальным
  • Число и размер параметров
  • Является ли это методом экземпляра (с неявной проверкой недействительности)
  • Есть ли возвращаемое значение (и его размер, если это так)

Это очень, очень маловероятно, чтобы быть вашим узким местом. Как всегда, сначала напишите наиболее читаемый код, а затем сравните его, чтобы убедиться, что он работает достаточно хорошо. Если это не так, используйте профилировщик, чтобы найти горячие точки, которые могут стоить микро-оптимизации.

Ответ 2

Существует cost, связанный с вызовами метода;

Аргументы необходимо вставлять в стек или хранить в регистрах, необходимо пропустить пролог и epilog метода и так далее. Стоимость этих вызовов можно избежать с помощью In-lining.

Но, JIT использует несколько эвристик, чтобы решить, должен ли метод быть вставлен в линию. Следующие факторы влияют на JIT, а не на метод In-line.

  • Методы, превышающие 32 байты IL
  • Виртуальные функции
  • Методы, которые имеют сложный поток контроль
  • Методы, которые содержат блоки обработки исключений
  • Если какой-либо из методов формальный Аргументы - это структуры.

Ссылка: Вставка метода

Ответ 3

То же, что и в С++. В основном вызов и возврат, а также настройка параметров. Обратите внимание, однако, что JIT может встроить метод вызовов - поэтому он может быть не так дорог в определенном контексте, как вы думаете.

Ответ 4

Незначительный. Каждый вызов в .net, по крайней мере для С#, является виртуальным вызовом, даже если метод не помечен как виртуальный, рассмотрите его.

Ответ 5

Стоимость исполнения настолько несущественна, что не имеет значения по сравнению с тем, чтобы сделать код легко читаемым и его четкое представление.