fcs
2025-04-10 0163870d662dc5b7d69ceff977490ede594f7d82
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/*!
 * utility - benchmark/date_format.js
 * Copyright(c) 2013 fengmk2 <fengmk2@gmail.com>
 * MIT Licensed
 */
 
"use strict";
 
/**
 * Module dependencies.
 */
 
// http://jsperf.com/access-log-date-format
 
var utils = require('../');
var moment = require('moment');
var Benchmark = require('benchmark');
var suite = new Benchmark.Suite();
 
var fasterAccessDate = function () {
  // 0   1   2  3    4        5        6
  // Tue Apr 16 2013 16:40:09 GMT+0800 (CST)
  // =>
  // 16/Apr/2013:16:40:09 +0800
  var dates = new Date().toString().split(' ');
  return dates[2] + '/' + dates[1] + '/' + dates[3] + ':' + dates[4] + ' ' + dates[5].substring(3);
};
 
var fasterAccessDate2 = function () {
  // 0   1   2  3    4        5        6
  // Tue Apr 16 2013 16:40:09 GMT+0800 (CST)
  // =>
  // 16/Apr/2013:16:40:09 +0800
  var dates = Date().split(' ');
  return dates[2] + '/' + dates[1] + '/' + dates[3] + ':' + dates[4] + ' ' + dates[5].substring(3);
};
 
console.log('moment().format("DD/MMM/YYYY:HH:mm:ss ZZ"): %j', moment().format('DD/MMM/YYYY:HH:mm:ss ZZ'));
console.log('utils.accessLogDate(): %j', utils.accessLogDate());
console.log('utils.logDate(): %j', utils.logDate());
console.log('fasterAccessDate(): %j', fasterAccessDate());
console.log('fasterAccessDate2(): %j', fasterAccessDate2());
console.log('new Date().toString(): %j', new Date().toString());
console.log('Date(): %j', Date());
console.log('Date.now(): %j', Date.now());
console.log('------------------------');
 
suite
.add("moment().format('DD/MMM/YYYY:HH:mm:ss ZZ')", function () {
  moment().format('DD/MMM/YYYY:HH:mm:ss ZZ');
})
.add('utils.accessLogDate()', function () {
  utils.accessLogDate();
})
.add('utils.logDate()', function () {
  utils.logDate();
})
.add('fasterAccessDate()', function () {
  fasterAccessDate();
})
.add('fasterAccessDate2()', function () {
  fasterAccessDate2();
})
.add('new Date().toString()', function () {
  new Date().toString();
})
.add('Date()', function () {
  Date();
})
.add('Date.now()', function () {
  Date.now();
})
// add listeners
.on('cycle', function (event) {
  console.log(String(event.target));
})
.on('complete', function () {
  console.log('Fastest is ' + this.filter('fastest').pluck('name'));
})
.run({ async: false });