regex-lexing-perf

JavaScript performance comparison

Test case created by Kyle Simpson

Info

Trying to identify major perf diff between chrome/chromium-based browsers and everyone else, from this test: http://jsperf.com/lexing-number-literals

Preparation code

<script>

function examine(code) {
        var pattern = /\d+/g,
                match, next_match_idx = 0
        ;

        while (next_match_idx < code.length) {
                match = pattern.exec(code);
                next_match_idx = pattern.lastIndex;
                if (!match) break;
        }
}


var test_code = "\
   a=042;\n\
   o=42+a['foo'].b-e;\n\
   a='foo';\n\
   a=0x42;\n\
   /a/g;\n\
   o=42+a['foo'].b-e;\n\
   a='foo';\n\
   o=42+a['foo'].b-e;\n\
   o=42+a['foo'].b-e;\n\
   a=0x42;\n\
   a=a42;\n\
   o=42+a['foo'].b-e;\n\
   a='foo';\n\
   o=42+a['foo'].b-e;\n\
   a=042;\n\
   a='foo';\n\
   a=0x42;\n\
   o=42+a['foo'].b-e;\n\
   a='foo';\n\
   a='foo';\n\
   /a/g;\n\
   o=42+a['foo'].b-e;\n\
   a='foo';\n\
   a=0x42;\n\
   a=0x42;\n\
   a='foo';\n\
   o=42+a['foo'].b-e;\n\
   o=42+a['foo'].b-e;\n\
   a='foo';\n\
   a='foo';\n\
   a='foo';\n\
   a=042;\n\
   o=42+a['foo'].b-e;\n\
   a=0x42;\n\
   a='foo';\n\
   a='foo';\n\
   o=42+a['foo'].b-e;\n\
   a=a42;\n\
   a='foo';\n\
   a='foo';\n\
   a=0x42;\n\
   o=42+a['foo'].b-e;\n\
   a=42;\n\
   a=042;\n\
   o=42+a['foo'].b-e;\n\
   a=042;\n\
   o=42+a['foo'].b-e;\n\
   a=0x42;\n\
   a=a42;\n\
   /a/g;\n\
   a='foo';\n\
   o=42+a['foo'].b-e;\n\
   o=42+a['foo'].b-e;\n\
   o=42+a['foo'].b-e;\n\
   a='foo';\n\
   a=0x42;\n\
   a=-42;\n\
   o=42+a['foo'].b-e;\n\
   a='foo';\n\
   a='foo';\n\
   a=042;\n\
   a=0x42;\n\
   o=42+a['foo'].b-e;\n\
   a=a42;\n\
   a='foo';\n\
   a=042;\n\
   a=a42;\n\
   o=42+a['foo'].b-e;\n\
   a=.42;\n\
   /a/g;\n\
   a=042;\n\
   o=42+a['foo'].b-e;\n\
   a=a42;\n\
   a=042;\n\
   /a/g;\n\
   /a/g;\n\
   a=a42;\n\
   o=42+a['foo'].b-e;\n\
   a=a42;\n\
   o=42+a['foo'].b-e;\n\
   o=42+a['foo'].b-e;\n\
   o=42+a['foo'].b-e;\n\
   a=042;\n\
   o=42+a['foo'].b-e;\n\
   a=042;\n\
   a=0.42;\n\
   o=42+a['foo'].b-e;\n\
   a=a42;\n\
   o=42+a['foo'].b-e;\n\
   a=042;\n\
   o=42+a['foo'].b-e;\n\
   a=a42;\n\
   o=42+a['foo'].b-e;\n\
   a=a42;\n\
   o=42+a['foo'].b-e;\n\
   a=042;\n\
   o=42+a['foo'].b-e;\n\
   a=042;\n\
   a=042;\n\
   a=042;\n\
   o=42+a['foo'].b-e;\n\
   a=a42;\n\
   o=42+a['foo'].b-e;\n\
   a=a42;\n\
   a=42.;\n\
   o=42+a['foo'].b-e;\n\
   a=042;\n\
   a=42.3;\n\
   a=042;\n\
   o=42+a['foo'].b-e;\n\
   o=42+a['foo'].b-e;\n\
   o=42+a['foo'].b-e;\n\
   o=42+a['foo'].b-e;\n\
   /a/g;\n\
   a=42.3.a;\n\
   a=42..a;\n\
   a=042;\n\
   o=42+a['foo'].b-e;\n\
   /a/g;\n\
   /a/g;\n\
   a=042;\n\
   a=42e3;\n\
   a=042;\n\
   o=42+a['foo'].b-e;\n\
   o=42+a['foo'].b-e;\n\
   /a/g;\n\
   a=042;\n\
   /a/g;\n\
   /a/g;\n\
   a=042;\n\
   o=42+a['foo'].b-e;\n\
   a=a42;\n\
   /a/g;\n\
   a=042;\n\
   a=42.e3;\n\
   a=.42e3;\n\
   o=42+a['foo'].b-e;\n\
   a=042;\n\
   /a/g;\n\
   /a/g;\n\
   /a/g;\n\
   a='foo';\n\
   /a/g;\n\
   a='foo';\n\
   /a/g;\n\
   a=042;\n\
   a='foo';\n\
   o=42+a['foo'].b-e;\n\
   a='foo';\n\
   a='foo';\n\
   /a/g;\n\
   o=42+a['foo'].b-e;\n\
   a='foo';\n\
   /a/g;\n\
   a=042;\n\
   a=042;\n\
   o=42+a['foo'].b-e;\n\
   /a/g;\n\
   a=42e-3;\n\
   a=a42;\n\
   a=042;\n\
   /a/g;\n\
   /a/g;\n\
   a='foo';\n\
   a=042;\n\
   o=42+a['foo'].b-e;\n\
   a=42.e-3;\n\
   a=042;\n\
   /a/g;\n\
   a='foo';\n\
   a=a42;\n\
   a='foo';\n\
   /a/g;\n\
   o=42+a['foo'].b-e;\n\
   a=042;\n\
   a='foo';\n\
   a=042;\n\
   /a/g;\n\
   a=0xaa;\n\
   o=42+a['foo'].b-e;\n\
   a='foo';\n\
   a='foo';\n\
   a=042;\n\
   a='foo';\n\
   a=0x42;\n\
   a=a42;\n\
   /a/g;\n\
   o=42+a['foo'].b-e;\n\
   /a/g;\n\
   a='foo';\n\
   /a/g;\n\
   a=042;\n\
   a=a42;\n\
   a=0x42;\n\
   o=42+a['foo'].b-e;\n\
   a='foo';\n\
   a=042;\n\
   a='foo';\n\
   a='foo';\n\
   a=0x42;\n\
   o=42+a['foo'].b-e;\n\
   /a/g;\n\
   a=042;\n\
   /a/g;\n\
   a=042;\n\
   /a/g;\n\
   a=0x42;\n\
   /a/g;\n\
   o=42+a['foo'].b-e;\n\
   o=42+a['foo'].b-e;\n\
   /a/g;\n\
   a=042;\n\
   a='foo';\n\
   a=a42;\n\
   o=42+a['foo'].b-e;\n\
   o=42+a['foo'].b-e;\n\
   o=42+a['foo'].b-e;\n\
   o=42+a['foo'].b-e;\n\
   /a/g;\n\
   a=0x42;\n\
   o=42+a['foo'].b-e;\n\
   a=042;\n\
   o=42+a['foo'].b-e;\n\
   a='foo';\n\
   a=a42;\n\
   a='foo';\n\
   o=42+a['foo'].b-e;\n\
   o=42+a['foo'].b-e;\n\
   o=42+a['foo'].b-e;\n\
   a=042;\n\
   o=42+a['foo'].b-e;\n\
   /a/g;\n\
   a=042;\n\
   a='foo';\n\
"
;

</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
basic regex lexing
examine(test_code);
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