V8 performance inside try/catch

Date: 16 Apr 2012Author: Erik Dubbelboer

I have learned recently that V8, the javascript engine behind nodejs can’t optimize inside a try/catch block. Just look at the running times of the next two examples:

function test () { try { for ( var i = 0 ; i < 1000000000 ; ++ i ) { if ( i % 2 ) { ; } } } catch ( e ) { } } test ();

This example takes on average 9 seconds to complete.

function test () { for ( var i = 0 ; i < 1000000000 ; ++ i ) { if ( i % 2 ) { ; } } } try { test (); } catch ( e ) { }

While this very similar example takes an average of 1.7 seconds to complete.

function test () { for ( var i = 0 ; i < 1000000000 ; ++ i ) { try { if ( i % 2 ) { ; } } catch ( e ) { } } } test ();

Setting up a try/catch frame is also very expensive as can be seen by this example taking an average of 11 seconds.

Please enable JavaScript to view the comments powered by Disqus.

Disqus