Benchmark: Intl/Globalize

HTML

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.min.js"></script>
<div class="container">

  <h1>
    Benchmark: Intl/Globalize
  </h1>
  <p id="msg"></p>
  <button id="btnGo" class="btn btn-primary">
        Go
      </button>
</div>

CSS

td {
  text-align: right;
}

tr:first-child {
  font-weight: bold;
}

JavaScript

onload = function() {

  var msg = wijmo.format('{date:MMM yyyy}: {nav}', {
    date: new Date(),
    nav: navigator.userAgent
  })
  document.getElementById('msg').textContent = msg;

  document.getElementById('btnGo').addEventListener('click', function() {
    bench(100000);
  });

  function bench(cnt) {

    // Intl NumberFormat
    var startInum = Date.now();
    var fn = new Intl.NumberFormat('en', {
      style: 'decimal', // or currency or percent
      useGrouping: true,
      minimumFractionDigits: 2,
      maximumFractionDigits: 2
    });
    for (var i = 0; i < cnt; i++) {
      var sInum = fn.format(12345.6789);
    }
    var tmInum = Date.now() - startInum;
    log('Intl.NumberFormat.format', tmInum);

    // Globalize.formatNumber
    var startGnum = Date.now();
    for (var i = 0; i < cnt; i++) {
      var sGnum = wijmo.Globalize.formatNumber(12345.6789, 'n2');
    }
    var tmGnum = Date.now() - startGnum;
    log('wijmo.Globalize.formatNumber', tmGnum);

    // Intl DateTimeFormat
    var today = new Date();
    var startIdt = Date.now();
    var fd = new Intl.DateTimeFormat('en');
    for (var i = 0; i < cnt; i++) {
      var sIdt = fd.format(today);
    }
    var tmIdt = Date.now() - startIdt;
    log('Intl.DateTimeFormat.format', tmIdt);

    // Globalize.formatDate
    var startGdt = Date.now();
    for (var i = 0; i < cnt; i++) {
      var sGdt = wijmo.Globalize.formatDate(today, 'd');
    }
    var tmGdt = Date.now() - startGdt;
    log('wijmo.Globalize.formatDate', tmGdt);
  }

  function log(title, time) {
    wijmo.createElement('<div>' + title + ' done in ' + time + ' ms</div>', document.body);
  }
}