Inlining of methods

90
11 сентября 2021, 22:20

В книге для подготовки к Java OCP экзамену прочитал следующее

final classes encourage the inlining of methods. With inlining, a method body can be expanded as part of the calling code itself, thereby avoiding the overhead of making a function call. If the calls are to be resolved at runtime, they cannot be inlined.

Не понял, что конкретно имеется ввиду. Прочитал пару статей по этой теме - без толка.

Вопрос: Что есть инлайнинг методов? Мне надо понять суть.

Особенно непонятна вот данная цитата

a method body can be expanded as part of the calling code itself,

ВНИМАНИЕ! Если данный вопрос является дубликатом, пожалуйста, вместо негативных оценок, просто ниже в комментах оставьте ссылку на оригинал, которая с вашей точки зрения, полностью отвечает на поставленный вопрос, если содержание ссылки даст нужные мне ответы - то данный вопрос сразу удалю.

Answer 1

Инлайнинг - это вставка тела метода в место его вызова. Что позволяет существенно увеличить скорость выполнения кода в некоторых случаях. Например до инлайнинга:

class Example {
    void someMethod(int i) {
        int v = i * i;
        System.out.println(i);
    }
    void anotherMethod() {
        for (int i = 0; i < 42; i++) {
            someMethod(i);
        }
    }
}

и после инлайнинга

class Example {
    void anotherMethod() {
        for (int i = 0; i < 42; i++) {
            int v = i * i;
            System.out.println(i);
        }
    }
}

Только делает это JIT-компилятор, который работает не с java-кодом, а с машинным.

READ ALSO
Почему такой огромный скачок между датами Date?

Почему такой огромный скачок между датами Date?

Было задание построить график дат, но на графике появились прыжки большие, оказалось проблема в переходе между датами в новый годВ связи...

161
Как понять,что поле равно NULL

Как понять,что поле равно NULL

Пусть в таблице есть поле Age типа Int в некоторой таблице,которое может быть NULПусть есть уже полученный ResultSet rs

132
Помогите доработать Транслитератор

Помогите доработать Транслитератор

Нужно доработать метод lat2cyr

94
Как округлить выводимое число

Как округлить выводимое число

У меня есть блок, который выводит число такого рода 7358

100