smushoff

JavaScript performance comparison

Test case created

Test runner

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

Java applet disabled.

Testing in unknown unknown
Test Ops/sec
SMUSH

                reports = [
                        {report_id: 0, employee_id: 123, full_name: 'Greg', role: 'Solutionist', payroll_date: 'June', earnings: 0},
                        {report_id: 1, employee_id: 456, full_name: 'Isaac', role: 'Solutionist', payroll_date: 'June', earnings: -10},
                        {report_id: 2, employee_id: 789, full_name: 'Chris', role: 'Dork', payroll_date: 'June', earnings: -100}
                ];

                components = [
                        {component_id: 1, report_id: 0, component_display: 'Component Name', component_group: 'Commission'},
                        {component_id: 2, report_id: 0, component_display: 'Component Name', component_group: 'Bonus'},
                        {component_id: 1, report_id: 1, component_display: 'Component Name', component_group: 'Commission'},
                        {component_id: 2, report_id: 1, component_display: 'Component Name', component_group: 'Bonus'},
                        {component_id: 1, report_id: 2, component_display: 'Component Name', component_group: 'Commission'},
                        {component_id: 2, report_id: 2, component_display: 'Component Name', component_group: 'Bonus'},
                        {component_id: 3, report_id: 2, component_display: 'Component Name', component_group: 'Bonus'}
                ];

                data = [
                        {report_id: 0, employee_id: 123, full_name: 'Greg', role: 'Solutionist', payroll_date: 'June', earnings: 0, components: [
                                {component_id: 1, component_display: 'Component Name', component_group: 'Commission'},
                                {component_id: 2, component_display: 'Component Name', component_group: 'Bonus'}
                        ]}
                ];

var r1 = smush(reports, components, 'report_id', 'components');

        function smush(obj1, obj2, on, into) {
                        // merge [obj1] and [obj2] based [on] common attr [into] new element
                        var out = [];
                        $(obj1).each(function () {
                                out.push(this);
                                var id = this[on];
                                var mem = $(obj2).filter(function () {
                                        return (this[on] == id);
                                });
                               
                                out[out.length-1][into] = [];
                                $(mem).each(function () {
                                        out[out.length-1][into].push(this);    
                                });
                        })
                        return out;
                }
pending…
BETTERSMUSH

                reports = [
                        {report_id: 0, employee_id: 123, full_name: 'Greg', role: 'Solutionist', payroll_date: 'June', earnings: 0},
                        {report_id: 1, employee_id: 456, full_name: 'Isaac', role: 'Solutionist', payroll_date: 'June', earnings: -10},
                        {report_id: 2, employee_id: 789, full_name: 'Chris', role: 'Dork', payroll_date: 'June', earnings: -100}
                ];

                components = [
                        {component_id: 1, report_id: 0, component_display: 'Component Name', component_group: 'Commission'},
                        {component_id: 2, report_id: 0, component_display: 'Component Name', component_group: 'Bonus'},
                        {component_id: 1, report_id: 1, component_display: 'Component Name', component_group: 'Commission'},
                        {component_id: 2, report_id: 1, component_display: 'Component Name', component_group: 'Bonus'},
                        {component_id: 1, report_id: 2, component_display: 'Component Name', component_group: 'Commission'},
                        {component_id: 2, report_id: 2, component_display: 'Component Name', component_group: 'Bonus'},
                        {component_id: 3, report_id: 2, component_display: 'Component Name', component_group: 'Bonus'}
                ];

                data = [
                        {report_id: 0, employee_id: 123, full_name: 'Greg', role: 'Solutionist', payroll_date: 'June', earnings: 0, components: [
                                {component_id: 1, component_display: 'Component Name', component_group: 'Commission'},
                                {component_id: 2, component_display: 'Component Name', component_group: 'Bonus'}
                        ]}
                ];

var r1 = bettersmush(reports, components, 'report_id', 'components');


                function bettersmush(obj1,obj2,on) {
                        var out = [];
                        $.map(obj1, function (n) {
                                $.extend({}, n, obj2.filter( function () {
                                        return n['on'] == this['on']
                                }))
                                out.push (n);
                        })
                        return out;
                }
pending…

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

Compare results of other browsers

0 comments

Add a comment