CoffeeScript Inheritance vs augment

JavaScript performance comparison

Test case created by Aadit M Shah

Info

CoffeeScript is understandably better than augment when it comes to a single class without inheritance, but how much faster is augment when there's inheritance?

Preparation code

<script src="https://raw.github.com/javascript/augment/master/augment.js"></script>
<script>
var __hasProp = {}.hasOwnProperty,
  __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
</script>

Preparation code output

Test runner

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

Java applet disabled.

Testing in unknown unknown
Test Ops/sec
CoffeeScript
var Rectangle = (function() {

  function Rectangle(width, height) {
    this.width = width;
    this.height = height;
  }

  Rectangle.prototype.area = function() {
    return this.width * this.height;
  };

  return Rectangle;

})();

var Square = (function(_super) {

  __extends(Square, _super);

  function Square(side) {
    Square.__super__.constructor.call(this, side);
  }

  return Square;

})(Rectangle);

var square = new Square(5);
square.area();
pending…
augment
var Rectangle = Object.augment(function () {
    this.area = function () {
        return this.width * this.height;
    };

    return Rectangle;

    function Rectangle(width, height) {
        this.height = height;
        this.width = width;
    }
});

var Square = Rectangle.augment(function (Rectangle) {
    return Square;

    function Square(side) {
        Rectangle.call(this, side, side);
    }
});

var square = new Square(5);
square.area();
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