Perché V8 non è in grado di ottimizzare i blocchi try-catch-finally, quando altri runtime importanti (SpiderMonkey, Chakra) sembrano non avere problemi con questo?Perché V8 non può ottimizzare try-catch-finally?
risposta
Non c'è una ragione particolare diversa dal problema ha una priorità relativamente bassa.
Questo sarà ottimizzato ad un certo punto
check this out chromium v8 issue 1065
Se il target V8 è possibile spostare try-catch per funzione separata, ma si dovrebbe farlo solo se si tratta di un problema di prestazioni reali altrimenti è solo un'ottica prematura.
"programmatori sprecare enormi quantità di tempo a pensare, o preoccuparsi, la velocità di parti non critiche dei loro programmi, e questi tentativi di efficienza hanno in realtà un forte impatto negativo durante il debug e la manutenzione sono considerati. dobbiamo dimenticare piccole efficienze, diciamo circa il 97% del tempo: l'ottimizzazione prematura è la radice di tutti i mali Eppure non dobbiamo perdere le nostre opportunità in quella critica del 3%" - Donald Knuth
. T ha solo la funzione che molto probabilmente non sarà mai ottimizzato sono
- funzioni con una dichiarazione "debugger"
- funzioni che chiamano eval()
- funzioni che contengono un "con" dichiarazione
Altri problemi con l'ottimizzazione dovrebbero essere risolti a un certo punto.
Come seguito tardivo di questa risposta, si noti che il nuovo compilatore TurboFan in V8 ora ottimizza sia try-catch-finally che altre funzionalità: https://news.ycombinator.com/item? id = 12178856 – csvan