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 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tests of Prettifier w/ large data files</title>
<script src="../src/prettify.js" type="text/javascript"
onerror="alert('Error: failed to load ' + this.src)"></script>
<link rel="stylesheet" type="text/css" href="../src/prettify.css" />
<link rel="stylesheet" type="text/css" href="test_styles.css" />
</head>
<body bgcolor="white">
<div id="timing"></div>
<div id="errorReport" style="white-space: pre"></div>
<!--
- Generate inputs of various sizes so that we can try fitting a
- curve to the run times.
-->
<script type="text/javascript">
if (!Date.now) {
Date.now = function () { return (new Date).getTime(); };
}
if (typeof console === 'undefined') {
console = {
log: (function () {
var messages = [];
var pending = false;
function showMessages() {
pending = false;
if (messages.length) {
var text = messages.join('\n');
var pre = document.createElement('PRE');
pre.appendChild(document.createTextNode(text));
document.body.appendChild(pre);
messages = [];
}
}
return function (msg) {
if (!pending) {
setTimeout(showMessages, 0);
pending = true;
}
messages.push(msg);
};
})()
};
}
(function () {
var tasks = [];
var jsonTimes = [];
var xmlTimes = [];
var listItem = (
'<li class="friendly" style="blink: like-its-going-out-of-style">'
+ '<b>Howdy</b> Neighbor</li>');
var jsonItem = (
'{ "friendly": true, "blinking": "hell-yes", "greeting": "Howdy!" }');
function makeTargets(lang, item, sep, preText, postText, timesList) {
var buffer = [];
for (var i = 512; --i >= 0;) { buffer.push(item); }
var count = 512;
for (var i = 6; --i >= 0;) {
var src = buffer.join(sep);
tasks.push((function (n, toPrettify) {
return function () {
console.log('starting ' + lang + ' ' + n);
var t0 = Date.now();
var result = prettyPrintOne(toPrettify, lang);
var t1 = Date.now();
console.log('finishing ' + lang + ' ' + n);
if (result === toPrettify) {
console.error('Failed to prettify ' + lang + ' ' + n);
} else {
timesList.push([n, t1 - t0, toPrettify.length]);
}
};
})(count, preText + src + postText));
buffer = [src, src];
count *= 2;
}
}
makeTargets('xml', listItem, '\n', '<ul>', '<\/ul>', xmlTimes);
makeTargets('json', jsonItem, ', ', '[', ']', jsonTimes);
function emitBenchmarkTable(title, times) {
var html = [
'<h2>', title, '<h2>',
'<table class=="benchmark"><tr><th>Count<th>Length<th>Time<th>Items Per Second'];
for (var i = 0; i < times.length; ++i) {
var time = times[i];
var count = time[0], deltaMs = time[1], length = time[2];
html.push('<tr><td>', count, '<td>', length, '<td>', deltaMs,
'<td>', (count * 1000 / deltaMs).toFixed(1));
}
html.push('</table>');
var div = document.createElement('DIV');
div.innerHTML = html.join('');
document.body.appendChild(div);
}
tasks.push(
function () { emitBenchmarkTable('XML', xmlTimes); },
function () { emitBenchmarkTable('JSON', jsonTimes); });
function doOne() {
var task = tasks.shift();
task();
if (tasks.length) { setTimeout(doOne, 250); }
}
setTimeout(doOne, 250);
})();
</script>
</body>
</html>
|