В настоящее время у меня есть несогласие с моим 2-летним профессором JAVA, что я надеюсь, что y'all может помочь решить:
Код, с которого мы начали, был следующим:
public T peek()
{
if (isEmpty())
.........
}
public boolean isEmpty()
{
return topIndex<0;
}
И она хочет, чтобы мы удалили ссылку isEmpty()
и поместили ее код непосредственно в оператор if
(т.е. изменили содержимое метода peek:
if(topIndex<0).......
), чтобы "сделать код более эффективным". Я утверждал, что: а) оптимизатор времени выполнения/компиляции, скорее всего,
isEmpty() call, b)
, даже если это не так, операции с 5-10 машинами будут незначительными почти в каждой ситуации, а в) его просто плохой стиль, потому что он делает программу менее читаемой и менее изменчивой.
Итак, я думаю, мой вопрос: Есть ли какая-либо эффективность выполнения, полученная логикой inlineing, а не просто вызовом метода? Я пробовал простые методы профилирования (так называемый длинный цикл и секундомер), но тесты были неубедительными.
ИЗМЕНИТЬ:
Спасибо всем за ответы! Я ценю, что вы все тратите время. Кроме того, я ценю тех из вас, кто прокомментировал прагматизм спорить с моим профессором и особенно делал это без данных. @Mike Dunlavey Я ценю ваше понимание как бывшего профессора и ваш совет относительно соответствующей последовательности кодирования. @ya_pulser Я особенно ценю советы и ссылки для профилирования, на которые вы потратили время, чтобы поделиться.