Warum ist V8 nicht in der Lage, Try-Catch-Finally-Blöcke zu optimieren, während andere bekannte Laufzeiten (SpiderMonkey, Chakra) scheinbar keine Probleme damit haben?Warum kann V8 nicht endlich versuchen zu versuchen?
Antwort
Es gibt keinen besonderen Grund außer das Problem hat eine relativ niedrige Priorität.
Dies wird
Check this out chromium v8 issue 1065
an einem gewissen Punkt zu optimieren Wenn Sie v8 Ziel können Sie versuchen, Beifang separate Funktion bewegen, aber Sie sollten dies nur tun, wenn es eine echte Performance-Problem ist Ansonsten ist es nur vorzeitige Optimierung.
„Programmierer verschwenden enorme Mengen an Zeit darüber nachzudenken, oder sich Gedanken über die Geschwindigkeit von nicht kritischen Teile ihrer Programme und diese Versuche an Effizienz haben tatsächlich eine starke negative Auswirkungen beim Debuggen und Wartung berücksichtigt werden. wir sollten über kleine Effizienz, sagen wir etwa 97% der Zeit vergessen: vorzeitige Optimierung ist die Wurzel allen Übels Aber wir nicht unsere Chancen passieren sollte in diesem kritischen 3%“- Donald Knuth
. T er einzige Funktion, die höchstwahrscheinlich nie mit einer „Debugger“ Anweisung
- Funktionen optimiert werden, dass ein „mit“ Anweisung enthalten
Andere Probleme mit der Optimierung sollten irgendwann behoben werden.
Als späte Follow-up zu dieser Antwort, sollte beachtet werden, dass der neue TurboFan-Compiler in V8 nun sowohl try-Catch-finally als auch andere Features optimiert: https://news.ycombinator.com/item? id = 12178856 – csvan