Первый вариант никогда не будет быстрее второго, он равен
{Object tmp = obj.getXY(); tmp.doX();}
{Object tmp = obj.getXY(); tmp.doY();}
Если getXY()
тривиален (например, просто возвращает константу), а финальный, хороший компилятор оптимизирует двойной вызовдалеко.Во всех других случаях дополнительный вызов метода сделает его медленнее.
Поскольку вторая версия в любом случае более читаема, я бы пошел с ней.Но, как отмечают другие, если getXY()
не сложен, этот тип микрооптимизации не окажет заметного влияния на производительность вашей программы.
Просто проверено it (doX()
/ doY()
не используются, OpenJDK6 на x64):
Integer getXY(){return 42;}
: нет заметных различийInteger getXY(){return Integer.valueOf("42");}
: Вариант два примерно в два раза быстрее, чем следует ожидать.