Powiel możliwe:
is “else if” faster than “switch() case” ?„jeśli” kontra „przełącznik”
Napotkałem wiele sytuacji, w których ostatnio mam bardzo proste warunkowe i trzeba oddział przepływ aplikacji. W „najprostsze” środki osiągania tego, co robię, to tylko zwykły stary if
/elseif
stwierdzenie:
if($value == "foo") {
// ...
} elseif($value == "bar") {
// ...
} elseif($value == "asdf" || $value == "qwerty") {
// ...
}
... ale jestem również biorąc pod uwagę coś takiego:
switch($value) {
case "foo":
// ...
break;
case "bar":
// ...
break;
case "qwer":
case "asdf":
// ...
}
Wydaje się to trochę mniej czytelny, ale może jest bardziej wydajny? Jednak, gdy pojawia się coraz więcej „lub” wyrażenia w warunkowej, wydaje się, że oświadczenie przełącznik jest znacznie bardziej czytelne i użyteczne:
switch($value) {
case "foo":
// ...
break;
case "bar":
case "baz":
case "sup":
// ...
break;
case "abc":
case "def":
case "ghi":
// ...
break;
case "qwer":
case "asdf":
// ...
}
Ja również widziałem opcje gdzie przepływ kodu za pomocą tablic i rozgałęzione funkcje:
function branch_xyz() {/* ... */}
function branch_abc() {/* ... */}
function branch_def() {/* ... */}
$branches = array(
"xyz"=>"branch_xyz",
"abc"=>"branch_abc",
"def"=>"branch_def"
);
if(isset($branches[$value])) {
$fname = $branches[$value];
$fname();
}
Ta ostatnia opcja również przypuszczalnie ma tę zaletę, że jest dystrybuowana w wielu plikach, choć jest dość brzydki.
Które z odczuć mają największe zalety przy najniższych kosztach pod względem wydajności, czytelności i łatwości użytkowania?
Używanie 'switch' jest lepiej w takiej sytuacji masz podane. – Sarfraz
Wydajność nawet nie ma na to wpływu. Najpierw zapisz czytelny kod, a następnie profiluj i zoptymalizuj w razie potrzeby. –
Duplikat duplikatu itp. Http://stackoverflow.com/questions/3387758/java-case-statment-or-if-statement-efficiency-perspective –