Skip to content

Instantly share code, notes, and snippets.

@moshen
Created October 6, 2017 21:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save moshen/7612f2ea95913e6d7cbf53f7790ad82d to your computer and use it in GitHub Desktop.
Save moshen/7612f2ea95913e6d7cbf53f7790ad82d to your computer and use it in GitHub Desktop.
A simple benchmark of a simple date format
var Benchmark = require('benchmark');
var moment = require('moment');
var faker = require('faker');
var suite = new Benchmark.Suite;
var format = 'YYYY-MM-DD';
var dateArr = [];
var pad = "00";
for (let i = 0; i < 100000; i++) {
dateArr[i] = moment(faker.date.past()).format();
}
// add tests
suite
.add('moment#format', function() {
var arr = [];
var len = dateArr.length;
for (let i = 0; i < len; i++) {
arr[i] = moment.utc(dateArr[i]).format(format);
}
})
.add('moment manual', function() {
var arr = [];
var len = dateArr.length;
var mom;
for (let i = 0; i < len; i++) {
mom = moment.utc(dateArr[i]);
arr[i] = mom.year() + '-' + (pad + (mom.month() + 1)).slice(-pad.length) + '-' + (pad + mom.date()).slice(-pad.length);
}
})
.add('moment manual + padStart', function() {
var arr = [];
var len = dateArr.length;
var mom;
for (let i = 0; i < len; i++) {
mom = moment.utc(dateArr[i]);
arr[i] = mom.year() + '-' + ('' + (mom.month() + 1)).padStart(2, '0') + '-' + ('' + mom.date()).padStart(2, '0');
}
})
.add('Date manual', function() {
var arr = [];
var len = dateArr.length;
var dt;
for (let i = 0; i < len; i++) {
dt = new Date(dateArr[i]);
arr[i] = dt.getFullYear() + '-' + (pad + (dt.getMonth() + 1)).slice(-pad.length) + '-' + (pad + dt.getDate()).slice(-pad.length);
}
})
.add('Date manual + padStart', function() {
var arr = [];
var len = dateArr.length;
var dt;
for (let i = 0; i < len; i++) {
dt = new Date(dateArr[i]);
arr[i] = dt.getFullYear() + '-' + ('' + (dt.getMonth() + 1)).padStart(2, '0') + '-' + ('' + dt.getDate()).padStart(2, '0');
}
})
.add('Date split', function() {
var arr = [];
var len = dateArr.length;
var dt;
for (let i = 0; i < len; i++) {
dt = new Date(dateArr[i]);
arr[i] = dt.toISOString().split('T')[0];
}
})
// add listeners
.on('cycle', function(event) {
console.log(String(event.target));
})
.on('complete', function() {
console.log('Fastest is ' + this.filter('fastest').map('name'));
})
// run
.run();
{
"name": "benchmark-date-format",
"version": "1.0.0",
"description": "A simple benchmark of a simple date format",
"main": "index.js",
"dependencies": {
"benchmark": "^2.1.4",
"faker": "^4.1.0",
"microtime": "^2.1.6",
"moment": "^2.18.1"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Colin Kennedy <moshen.colin@gmail.com>",
"license": "MIT"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment