2016-10-03 2 views
-6

Мне интересно, какая из следующих является наиболее эффективной?Какая из них более эффективна в Java?

int x = 1, y = 2; 
System.out.print(x+y) 

или ...

int x = 1, y = 2, z = 3; 
System.out.print(z); 

Я предполагаю, что это первый, но не уверен - спасибо.

+8

Разница буквально не имеет значения. –

+3

, если вы беспокоитесь о буквальной наносекундной разнице между этими двумя, вы оптимизируете неправильную вещь ... –

+4

Определите «эффективный». Более быстрое время выполнения? Уменьшить объем памяти? Меньший результат байт-кода? Что-то другое? Когда вы выполняете и просматриваете их, что соответствует вашим критериям? – David

ответ

-4

Это будет второй вариант, так как вам не нужна память для расчета. Вы просто печатаете число, а не добавляете их вместе и не печатаете.

Это простой пример, поэтому производительность не заметно на этом уровне ..

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

+2

Где доказательства? – nhouser9

5

Реальный ответ: говорить о эффективности на таком уровне не делает любой смысл.

Имейте в виду, что общая производительность и эффективность Java-программы определяется многими факторами - например, когда/как JIT запускается, чтобы превратить байт-код в машинный код.

Беспокойство по поводу таких тонкостей не поможет вам создать содержательный, ремонтируемый, «хороший OO» дизайн. Heck; в вашем случае, в зависимости от контекста, может быть даже, что компилятор делает постоянным складыванием и превращает все это в println (3) (так как это действительно прямо, чтобы выбросить эти переменные); поэтому, возможно, в обоих случаях компилятор создает тот же самый байт-код.

Не поймите меня неправильно: справедливо спросить/узнать/понять, что делают компиляторы, JVM и JIT. Но: не предполагайте, что вы можете классифицировать вещи, которые легко превращаются в «Более эффективный, чем B».

+1

Согласитесь и +1. Чтобы добавить к этому, задача компилятора - оптимизировать вещи на этом уровне, а не программиста. Оптимизация программистов должна выполняться на уровне алгоритма. – nhouser9

+0

Я только начинаю учиться, поэтому я ищу лучшие практики, поэтому я ценю все ответы и буду рассматривать все предложения в соответствующих ситуациях, поэтому спасибо. – Jamie

+0

@Jamie Thats fair. И я уже обновил свой вопрос в этом направлении. – GhostCat

1

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