Ответов (8)8
Это микро-микро-оптимизация (и, возможно, в любом случае что-то обрабатывается компилятором). Не беспокойся об этом. Вы получите гораздо больший доход, если сосредоточитесь на реальном алгоритме вашей программы.
Мы должны забыть о небольшой эффективности, скажем, в 97% случаев: преждевременная оптимизация - это корень всех зол. - Дональд Кнут
foo = null;
if (foo != null)
foo = null;
Если бы я посмотрел на второй блок-код, я бы подумал, что вы хотите установить для переменной foo значение null только в том случае, если раньше она не была нулевой, и если я посмотрю на первый код, я подумаю, что вы хотите установить для переменной foo значение null в любом случае.
Я знаю, что это из-за примера, который вы написали, но в конечном итоге такая микрооптимизация только добавляет путаницы (это того не стоит).
Это будет иметь незначительный эффект или не будет иметь никакого эффекта. Я не думаю, что вы могли бы даже создать тест, чтобы продемонстрировать разницу.
Фактически, некоторые могут возразить, что присвоение null вообще является запахом кода (см. Детектор PMD для NullAssignment ):
Присвоение переменной «null» (вне ее объявления) обычно является плохим тоном. Иногда назначение является признаком того, что программист не полностью понимает, что происходит в коде. ПРИМЕЧАНИЕ. В редких случаях такое назначение может быть полезно для стимулирования сборки мусора. Если это то, для чего вы его используете, во что бы то ни стало, не обращайте внимания на это правило :-)
В общем, я лично с подозрением отношусь ко всему, что пытается стимулировать сборку мусора (вы почти всегда получаете эффекты, которых не ожидали).
Прежде всего, это микрооптимизация. Так что не нужно сильно об этом беспокоиться.
Но чтобы ответить на ваш вопрос, вам нужно сократить его до одной строки. (поскольку весь ваш код - это установить его в NULL).
foo = NULL;
Причины в том, что
Сравнение - гораздо более дорогостоящая операция, чем присвоение. (Поскольку сравнение съедает много инструкций по сборке сравнительно. Обычно вычитание и сравнение с нулем или XOR и сравнение с нулем). Назначение требует меньше инструкций.