Производительность: Try-finally или сохранение в переменную и возврат позже? - PullRequest
0 голосов
/ 27 апреля 2020

Я сейчас работаю над проектом, который очень важен для производительности. И поскольку я не настолько хорошо знаком с рабочими нагрузками процессора и тому подобным, я хотел знать, что лучше (быстрее):

Foo doSomething1() { 
    try {
        return getVal();
    } finally {
        doSomeCleanup();
    }
}

или

Foo doSomething2() { 
    final Foo result = getVal();
    doSomeCleanup();
    return result;
}

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

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

0 голосов
/ 27 апреля 2020

Если только вы не ожидаете, что метод getVal() сможет вызвать исключение, попытка окончательно используется неправильно. Второй вариант является правильным. Однако, если вы хотите иметь возможность выполнить очистку в обоих случаях, когда getVal() может выдавать или не выдавать исключение, рекомендуется использовать try-finally.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...