Run details:
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36
Chrome 133
Linux
Desktop
28 days ago
Test name Executions per second
ES6 Class 95144864.0 Ops/sec
Function Prototype 127068104.0 Ops/sec
Object Literal 1140629.2 Ops/sec
Functional 127980880.0 Ops/sec
Script Preparation code:
x
 
class Point {
    constructor(x, y) {
        this.x = x;
        this.y = y;
    }
    add(point) {
        return new Point(this.x + point.x, this.y + point.y);
    }
    sub(point) {
        return new Point(this.x - point.x, this.y - point.y);
    }
}
var Point1 = Point;
function Point2(x, y) {
    this.x = x;
    this.y = y;
}
Point2.prototype.add = function(point) {
    return new Point2(this.x + point.x, this.y + point.y);
}
Point2.prototype.sub = function(point) {
    return new Point2(this.x - point.x, this.y - point.y);
}
function Point3(x, y) {
    return {
        x,
        y,
        add: (point) => Point3(this.x + point.x, this.y + point.y),
        sub: (point) => Point3(this.x - point.x, this.y - point.y)
    }
}
var add = (a, b) => Point3(a.x + b.x, a.y + b.y)
var sub = (a, b) => Point3(a.x - b.x, a.y - b.y)
Tests:
  • ES6 Class

     
    var p1 = new Point1(10, 10);
    var p2 = new Point1(10, -10);
    var sum = p1.add(p2);
    var dif = p1.sub(p2);
  • Function Prototype

     
    var p1 = new Point2(10, 10);
    var p2 = new Point2(10, -10);
    var sum = p1.add(p2);
    var dif = p1.sub(p2);
  • Object Literal

     
    var p1 = Point3(10, 10);
    var p2 = Point3(10, -10);
    var sum = p1.add(p2);
    var dif = p1.sub(p2);
  • Functional

     
    var p1 = {x:10, y:10};
    var p2 = {x:10, y:-10};
    var sum = add(p1, p2);
    var dif = sub(p1, p2);