Какой способ быстрее и менее ресурсоемок:
boolean = !boolean
boolean ^= boolean
Изменить: это не вопрос, основанный на мнении. Есть правильный ответ.
Какой способ быстрее и менее ресурсоемок:
boolean = !boolean
boolean ^= boolean
Изменить: это не вопрос, основанный на мнении. Есть правильный ответ.
Я измерил с помощью следующего кода.
public static void main(String[] args)
{
boolean myVariable = true;
long startTime = 0;
long endTime = 0;
long duration1 = 0;
long duration2 = 0;
for(int i=0; i<1000; i++) {
startTime = System.nanoTime();
myVariable = !myVariable;
endTime = System.nanoTime();
duration1 += (endTime - startTime);
startTime = System.nanoTime();
myVariable ^= myVariable;
endTime = System.nanoTime();
duration2 += (endTime - startTime);
}
System.out.println("The duration for the first operation is :" + (duration1/1000));
System.out.println("The duration for second operation is :" + (duration2/1000));
}
Продолжительность первой операции: 140
Продолжительность второй операции: 123
Основываясь на этом анализе, логическое ^ = логическое значение быстрее, чем логическое =! Логическое.
boolean ^= boolean
, то boolean = !boolean
будет быстрее.
- person Jakuje; 18.01.2016
boolean = !boolean
, вероятно, лучше, так как его легче читать. Оба они не совсем ресурсоемкие, поэтому использование любого из них не повлияет на производительность.