aboutsummaryrefslogtreecommitdiffstats
path: root/library/moment/benchmarks/zeroFill.js
blob: 9ce76ee98f2fff13180dc7823c4a6890c77139ba (plain) (blame)
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
var Benchmark = require('benchmark');

module.exports = {
  name: 'zeroFill',
  tests: {
    zeroFillMath: {
      setup: function() {
        var zeroFillMath = function(number, targetLength, forceSign) {
            var absNumber = '' + Math.abs(number),
                zerosToFill = targetLength - absNumber.length,
                sign = number >= 0;
            return (sign ? (forceSign ? '+' : '') : '-') +
                Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;
        }
      },
      fn: function() {
        zeroFillMath(Math.random() * 1e5 | 0, 5);
        zeroFillMath(Math.random() * 1e5 | 0, 10);
        zeroFillMath(Math.random() * 1e10 | 0, 20);
      },
      async: true
    },
    zeroFillWhile: {
      setup: function() {
        var zeroFillWhile = function(number, targetLength, forceSign) {
          var output = '' + Math.abs(number),
              sign = number >= 0;

          while (output.length < targetLength) {
              output = '0' + output;
          }
          return (sign ? (forceSign ? '+' : '') : '-') + output;
        }
      },
      fn: function() {
        zeroFillWhile(Math.random() * 1e5 | 0, 5);
        zeroFillWhile(Math.random() * 1e5 | 0, 10);
        zeroFillWhile(Math.random() * 1e10 | 0, 20);
      },
      async: true
    }
  }
};