Toggle navigation
MeasureThat
.net
Create a benchmark
Tools
Feedback
Feature Requests
FAQ
Register
Log In
Run results for:
Factory vs Class
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36
Browser:
Chrome 143
Operating system:
Windows
Device Platform:
Desktop
Date tested:
8 months ago
Benchmark engine:
Benchmark.js
Factory (init outside of loop)
3.0M/s
Factory
50K/s
Class (init outside of loop)
23K/s
Class
13K/s
View exact numbers
Test name
Executions per second
✓
Factory (init outside of loop)
2,982,652 Ops/sec
Factory
49,506 Ops/sec
Class (init outside of loop)
22,835 Ops/sec
Class
13,172 Ops/sec
Tests:
Factory
'use strict'; function getInstance(param1) { var var1 = 'hello'; var m1 = function (p) { return 'testing: ' + p; }; return { getParam1: function () { return param1; }, var1: var1, getResult: function (p) { return param1 + ', ' + var1 + ', ' + m1(p); } }; } var a; var i = 0; var t1, t2; for (i; i < 1000; i++) { a = getInstance('A - ABC'); t1 = a.getParam1() + a.var1; t2 = t1 + a.getResult('result A'); }
Class
'use strict'; var TestClass = function () { function TestClass(param1) { this.param1 = param1; this.var1 = 'hello'; } TestClass.prototype.m1 = function (p) { return 'testing: ' + p; }; ; TestClass.prototype.getParam1 = function () { return this.param1; }; TestClass.prototype.getResult = function (p) { return this.param1 + ', ' + this.var1 + ', ' + this.m1(p); }; return TestClass; }(); var b; var i = 0; var t1, t2; for (i; i < 1000; i++) { b = new TestClass('B - ABC'); t1 = b.getParam1() + b.var1; t2 = t1 + b.getResult('result B'); }
Factory (init outside of loop)
'use strict'; function getInstance(param1) { var var1 = 'hello'; var m1 = function (p) { return 'testing: ' + p; }; return { getParam1: function () { return param1; }, var1: var1, getResult: function (p) { return param1 + ', ' + var1 + ', ' + m1(p); } }; } var a; var i = 0; var t1, t2; a = getInstance('A - ABC'); for (i; i < 1000; i++) { t1 = a.getParam1() + a.var1; t2 = t1 + a.getResult('result A'); }
Class (init outside of loop)
'use strict'; var TestClass = function () { function TestClass(param1) { this.param1 = param1; this.var1 = 'hello'; } TestClass.prototype.m1 = function (p) { return 'testing: ' + p; }; ; TestClass.prototype.getParam1 = function () { return this.param1; }; TestClass.prototype.getResult = function (p) { return this.param1 + ', ' + this.var1 + ', ' + this.m1(p); }; return TestClass; }(); var b; var i = 0; var t1, t2; b = new TestClass('B - ABC'); for (i; i < 1000; i++) { t1 = b.getParam1() + b.var1; t2 = t1 + b.getResult('result B'); }