StringEngine RegEx (v4)

Revision 4 of this benchmark created by Jonathan Perry on


Preparation HTML

<script type="text/javascript">

        var X = /\u0026[\w]+\u003b|\u0026\u0023(?:[1-9]+[\d]+|[1-9]+)\u003b+/g,
                XCODE = /\u0026\u0023(?:[1-9]+[\d]+|[1-9]+)\u003b+/,
                XCODEA = /\u0026\u0023[\d]+\u003b+/,
                XCODEB = /\u0026\u0023(?:[1-9]+[\d]+|[1-9]+)\u003b+/,
                XD = /[\d]+/,
                XN = /(?:[1-9]+[\d]+|[1-9]+)/,
                s;

        function SA(s) {

                var i, x, m;

                x = X;
                x.lastIndex = 0;
                m = x.exec(s);

                if (m !== null) { 

                        if (/\u0026\u0023(?:[1-9]+[\d]+|[1-9]+)\u003b+/.test(s)) {

                                i = parseInt(/[\d]+/.exec(s).shift(), 10);

                        }

                }

        }

        function SB(s) {

                var i, v, x, m;

                x = X;
                x.lastIndex = 0;
                m = x.exec(s);

                if (m !== null) {

                        if (/\u0026\u0023[\d]+\u003b+/.test(s)) {

                                i = parseInt(/[\d]+/.exec(s).shift(), 10);

                        }

                }

        }

        function SC(s) {

                var i, v, x, m;

                x = X;
                x.lastIndex = 0;
                m = x.exec(s);

                if (m !== null) {

                        x = XCODEA;

                        if (x.test(s)) {

                                x = XN;
                                i = parseInt(x.exec(s).shift(), 10);

                        }

                }

        }

        function SD(s) {

                var i, v, x, m;

                x = X;
                x.lastIndex = 0;
                m = x.exec(s);

                if (m !== null) {

                        x = XCODEB;

                        if (x.test(s)) {

                                x = XN;
                                i = parseInt(x.exec(s).shift(), 10);

                        }

                }

        }

        function SE(s) {

                var i, v, x, m;

                x = X;
                x.lastIndex = 0;
                m = x.exec(s);

                if (m !== null) {

                        x = XCODEA;

                        if (x.test(s)) {

                                x = XD;
                                i = parseInt(x.exec(s).shift(), 10);

                        }

                }

        }

        function SF(s) {

                var i, v, x, m;

                x = X;
                x.lastIndex = 0;
                m = x.exec(s);

                if (m !== null) {

                        x = XCODEB;

                        if (x.test(s)) {

                                x = XD;
                                i = parseInt(x.exec(s).shift(), 10);

                        }

                }

        }

</script>

Test runner

Ready to run.

Testing in
TestOps/sec
A
s = SA("&#0;");
s = SA("&#1;");
ready
B
s = SB("&#0;");
s = SB("&#1;");
ready
C
s = SC("&#0;");
s = SC("&#1;");
ready
D
s = SD("&#0;");
s = SD("&#1;");
ready
E
s = SE("&#0;");
s = SE("&#1;");
ready
F
s = SF("&#0;");
s = SF("&#1;");
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.

  • Revision 4: published by Jonathan Perry on