/ / Java вложени ако условията или всички условия в същото ако - java, оптимизация

Java вложени, ако условията или всички условия в една и съща if - java, оптимизация

Имам цикъл итерация, която съдържа много условия в тази форма

if (a[k]<=x){
if(al[k+1]==y){
if(a[k+2]>=x){
}
}
}

По-добро използване Използвайте условията в и в един, ако по отношение на производителността ??

 if ((a[k]<=x) && (al[k+1]==y) && (a[k+2]>=x)){


}

Отговори:

2 за отговор № 1

Както други отбелязват, целят четливост иНе прекалено предварително оптимизирайте кода. Измерете ефективността и ако идентифицирате този фрагмент от код, за да бъде пречка, започнете да мислите по-сериозно за проблема.

Също така, както е посочено в коментарите, представянето вероятно ще бъде идентично в тази ситуация. Възможно е да откриете различни характеристики за ефективност, ако сте поръчали предикатите. Нещо като:

if(B && A && C)

ако изчисляването на А е евтино и се връща 90% от грешното време и изчисляването на B е много скъпо, вместо това можете да напишете

if(A && B && C)

но отново, не стреляйте от бедрото! Целете се първо за четлив код, и ако измерванията Ви идентифицират затруднено представяне, разгледайте горното.


0 за отговор № 2

Всъщност, компилаторът е достатъчно "умен", за да компилира двата кода към една и съща байт-код java, но ако искаш моето мнение, първото е по-добро (защото четенето на много, ако, ако е досадно).


0 за отговор № 3

Ако имате много сложни условия във вашия цикъл, както казвате, помислете за преместването им в малки методи за по-добра четливост.

// inside loop
if (isValid(x, y, k)) {
}

// use a less generic method name in your code
private boolean isValid(int x, int y, int k) {
return a[k]<=x && al[k+1]==y && a[k+2]>=x;
}

В случай, че сега се притеснявате, че това ще доведе до лошо представяне, има голяма вероятност JVM да внедри тези методи.