Die Antwort ist technisch korrekt, aber sehr irreführend.
Im Kern des Problems ist die Beobachtung, dass Ausnahmen außergewöhnlich sind. Sie passieren normalerweise nicht. Dies ist nicht der Fall, wenn Sie einen Fehlercode zurückgeben. Dies geschieht immer, auch wenn kein Fehler vorliegt.In diesem Fall hat die Funktion noch 0
zurückzukehren, oder true
oder -1
oder ...
Nun bedeutet dies, dass eine CPU und ein Compiler speziell Funktionen optimieren können, die durch Ausnahme fehlschlagen. Aber es ist wichtig zu realisieren, was sie optimieren, und das ist die Nicht-Fehler, kein Ausnahmefall - auf Kosten der Ausnahmefälle.
Sobald wir das realisieren, können wir uns ansehen, wie der Compiler und die CPU solche Fälle optimieren. Eine übliche Methode besteht darin, den Ausnahmecode vom normalen Code zu trennen. Daher wird dieser Code normalerweise nicht im CPU-Cache landen, der als Ergebnis mehr nützlichen Code enthalten kann. Tatsächlich wird der Ausnahmecode möglicherweise nicht im RAM gespeichert und verbleibt auf der Festplatte.
Ein weiterer unterstützender Mechanismus ist der CPU-Verzweigungsprädiktor. Es wird daran erinnert, dass die Verzweigungen, die zu Ausnahmecode führen, normalerweise nicht genommen werden und daher voraussagen, dass sie auch das nächste Mal nicht genommen werden. Der Compiler kann dies sogar als Hinweis angeben. Dieses Hinweismerkmal wurde jedoch nach dem Intel Pentium 4 aufgegeben; moderne CPUs sagten Zweige gut genug voraus.