wenn->return vs. wenn->else Effizienz
Dies klingt vielleicht wie eine dumme Frage, und ich zögerte, um es zu veröffentlichen, aber trotzdem:
wenn etwas braucht, um laufen nur in einem bestimmten Zustand, die von diesen effizienter ist:
A.
if (condition) {
//do
//things...
}
B.
if (!condition) { return; }
//do
//things...
- Hat man dies Messen? Was haben Sie herausgefunden?
- Es ist ein style-Ding. Die Leistung ist nicht relevant; beide produzieren fast identische Maschine code. Wenn Sie vermeiden möchten "horizontale Programmierung", möchten Sie vielleicht lieber B zu vermeiden, geschachtelte Bedingungen.
- Check out jsperf.com wenn Sie Fragen haben, wie diese. Sehr nützliche Seite!
- Die Sprache und das framework sind redest du? (Nicht, dass es auch wirklich ankommt, denn die Antwort ist die gleiche für alle Sprachen und frameworks).
- Ihre Frage zeigt keine Forschung. Auch Sie hat nicht angegeben, die Sprache. Jedoch könnten Sie als Neuling und sagte, dass die Sorge nicht lohnt.
- .. in ein bisschen mehr weicher Art und Weise.
- Diese Frage entstand vor allem aus Neugier. Ich wollte nicht angeben, bestimmte Sprache oder ein framework, denn es war eine Allgemeine Frage. Ich habe einige Maßnahmen, die in einer Sprache und framework und die Ergebnisse waren die gleichen (ja, gut, nicht überraschend). Offensichtlich in den meisten Situationen "sollten Sie sich nicht wirklich kümmern", obwohl, wenn es ein performance-Unterschied, dann ist das offensichtlich in bestimmte Systeme mit bestimmten Konfigurationen ersetzen die Verwendung einer form mit einer anderen wäre die Sache. Und in jedem Fall, die Frage war nicht, "Sollte sich jemand dafür interessieren, was der Unterschied von...".
- Auch, ich verstehe natürlich, wie diese wahrgenommen werden kann, als eine "unnötige" (oder im schlimmsten Worte "dumm noobish") Frage und erwartete (und bekam) mindestens eine "harte Antwort" über es, aber es wurde gefragt, aus echtem Interesse und Lust auf mehr kompetente Leute nimmt es (und bekam diese auch, also danke).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie ebenso effizient, aber B ist in der Regel eine bessere Lesbarkeit, vor allem, wenn verwendet, um mehrere verschachtelte Bedingungen.
Bitte wähle die Sache, die die meisten lesbar. Performance-Optimierungen auf dieser Ebene sind kaum je ein Problem. Auch wirklich performance-sensitive Teile von frameworks (wie die .NET framework) profitieren nicht von solchen Mikro-Optimierung.
Die eigentliche Frage ist, sollte Sie wirklich?
Sage ich NEIN! Es ist wichtiger und besser lesbaren code als einige Mikro-Optimierung.
Es ist ein style-Ding. Die Leistung ist nicht relevant; beide produzieren fast identische Maschine code.
Einige überlegungen zum Stil:
Wenn Sie vermeiden möchten "horizontale Programmierung", möchten Sie vielleicht lieber B zu vermeiden, geschachtelte Bedingungen. Zum Beispiel, wenn Sie wollen, um Ausnahmen hinzuzufügen, ohne den Fluss der Methode zu viel:
Eine:
B:
Aber der Unterschied ist minimal, wenn Sie mich Fragen. Definitiv nicht Wert, einen "code style-Krieg".
Während ich damit einverstanden, dass Sie sollten wählen Sie die Lesbarkeit erste, ich werde gehen Sie vor und fügen Sie eine kleine info: In C# gibt es keinen Unterschied. Es kompiliert, um die gleiche Sache (wenn optimiert durch den Aufbau von Release-Modus). Andere Sprachen? Wer weiß, ich bin sicher, einige sehen es anders, aber die Chancen, dass Sie tatsächlich besorgt sein müssen, es ist schlank zu keiner.
Leistung ist mehr oder weniger das gleiche in beiden Fällen. Daher wird es eher ein Stil oder Präferenz-Frage.
Ich lieber persönlich schreiben, wenn--> zurück, d.h. Fall B, weil es macht den code übersichtlicher und einfacher zu Lesen, speziell wenn der code besteht aus Komplex verschachtelten Bedingungen.