Created
October 6, 2017 21:35
-
-
Save moshen/7612f2ea95913e6d7cbf53f7790ad82d to your computer and use it in GitHub Desktop.
A simple benchmark of a simple date format
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"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