Closure vs. property (v16)

Revision 16 of this benchmark created by Frederik Krautwald on


Description

ClosureColor as object literal.

Preparation HTML

<script>
function ClosureColor(name) {
    function getName() {
        return name;
    };
    function setName(n) {
        name = n;
    };
    return {
        'getName': getName,
        'setName': setName
    };
}
var closureColor = new ClosureColor('green');


function PropertyColor(name) {
    this._name = name;
    this.getName = function () {
        return this._name;
    };
    this.setName = function (n) {
        this._name = n;
    };
}
var propertyColor = new PropertyColor('green');


function PrototypeColor(name) {
    this._name = name;
}
PrototypeColor.prototype.getName = function () {
    return this._name;
};
PrototypeColor.prototype.setName = function (n) {
    this._name = n;
};
var prototypeColor = new PrototypeColor('green');

function closure( obj, color ) {
    /*ssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssss  ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssss
    */
    obj.setName( color );
    return obj.getName() === color;
}

function property( obj, color ) {
    /*ssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssss  ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssss
    */
    obj.setName( color );
    return obj.getName() === color;
}

function prototype( obj, color ) {
    /*ssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssss  ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
    ssssssssssssssssssssssssss
    */
    obj.setName( color );
    return obj.getName() === color;
}
</script>

Setup

var closureColor = ClosureColor('green');
    var propertyColor = new PropertyColor('green');
    var prototypeColor = new PrototypeColor('green');
    var str1 = "red";
    var str2 = "blue";

Test runner

Ready to run.

Testing in
TestOps/sec
Closure
if( closure(closureColor, str1) !== true ) die
if( closure(closureColor, str2) !== true ) die
 
ready
Property
if( property(propertyColor, str1) !== true ) die
if( property(propertyColor, str2) !== true ) die
 
ready
Prototype
if( prototype(prototypeColor, str1) !== true ) die
if( prototype(prototypeColor, str2) !== true ) die
ready

Revisions

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