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);
}
}