Exception performance

JavaScript performance comparison

Revision 9 of this test case created by Jonathan Moore

Info

Testing exception .vs. normal flows in try-catch blocks

Preparation code

 
<script>
Benchmark.prototype.setup = function() {
    function hasThrow(i) {
   
      if (i > 100)
        throw 'foo';
   
      return 1 + i
    }
   
    function noThrow(i) {
   
      if (i > 100)
        return undefined;
   
      return 1 + i
    }
};
</script>

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in unknown unknown
Test Ops/sec
Normal flow
return ['foo'] // Not thrown
pending…
Exception flow
try {
  throw new Error('foo'); // Thrown
} catch (e) {}
pending…
Empty block
try {
  'foo'
} catch (e) {}
pending…
Throw constant
try {
  throw 'foo'
} catch (e) {}
pending…
Undefined Exception
try {
  undefined["doesn't exist"]; // Thrown
} catch (e) {}
pending…
No throw in try
try {
  return ['foo']; // Not Thrown
} catch (e) {}
pending…
throw without catch
throw new Error('foo'); // Thrown
pending…
throw without catch constant
throw 'foo'
pending…
try/catch with an assignment
var s;
try {
  s = "ello, how you doing";
} catch (e) {}
pending…
function with thorw
hasThrow(1);
pending…
function without thorow
noThrow(1);
pending…
error with thorw
try {
  hasThrow(1000)
} catch (e) {}
pending…
error with no throw
var result = noThrow(1000);

if (result === undefined) {};
pending…
with catch no error
try {
  hasThrow(1)
} catch (e) {}
pending…
with out test no error
var result = noThrow(1);

if (result === undefined) {};
pending…

Compare results of other browsers

Revisions

You can edit these tests or add even more tests to this page by appending /edit to the URL. Here’s a list of current revisions for this page:

0 comments

Add a comment