79 lines
2.7 KiB
HTML
79 lines
2.7 KiB
HTML
|
<!DOCTYPE html>
|
||
|
<html>
|
||
|
<head>
|
||
|
<title>Chapter reflow performance test: random text</title>
|
||
|
<script src="../resources/runner.js"></script>
|
||
|
</head>
|
||
|
<body>
|
||
|
<pre id="log"></pre>
|
||
|
<div id="target" style="width: 300px; display: none;">
|
||
|
|
||
|
</div>
|
||
|
<script>
|
||
|
var RandomTextGenerator = function() {
|
||
|
this.letters = [
|
||
|
String.fromCharCode(RandomTextGenerator.firstCharCode),
|
||
|
String.fromCharCode(RandomTextGenerator.firstCharCode),
|
||
|
String.fromCharCode(RandomTextGenerator.firstCharCode),
|
||
|
String.fromCharCode(RandomTextGenerator.firstCharCode),
|
||
|
String.fromCharCode(RandomTextGenerator.firstCharCode),
|
||
|
String.fromCharCode(RandomTextGenerator.firstCharCode),
|
||
|
String.fromCharCode(RandomTextGenerator.firstCharCode),
|
||
|
String.fromCharCode(RandomTextGenerator.firstCharCode),
|
||
|
String.fromCharCode(RandomTextGenerator.firstCharCode),
|
||
|
String.fromCharCode(RandomTextGenerator.firstCharCode)
|
||
|
]
|
||
|
}
|
||
|
|
||
|
RandomTextGenerator.firstCharCode = 65; // 'A'
|
||
|
|
||
|
RandomTextGenerator.lastCharCode = 123; // 'z'
|
||
|
|
||
|
RandomTextGenerator.prototype.advance = function(index) {
|
||
|
var charCode = this.letters[index].charCodeAt(0);
|
||
|
var newCharCode = charCode + 1;
|
||
|
if (newCharCode > RandomTextGenerator.lastCharCode)
|
||
|
newCharCode = RandomTextGenerator.firstCharCode;
|
||
|
this.letters[index] = String.fromCharCode(newCharCode);
|
||
|
return charCode;
|
||
|
}
|
||
|
|
||
|
RandomTextGenerator.prototype.generate = function() {
|
||
|
var result = this.letters.join("");
|
||
|
|
||
|
var index = 0;
|
||
|
while (1) {
|
||
|
var charCode = this.advance(index);
|
||
|
if (charCode != RandomTextGenerator.lastCharCode)
|
||
|
break;
|
||
|
++index;
|
||
|
}
|
||
|
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
var target = document.getElementById("target");
|
||
|
var style = target.style;
|
||
|
var randomTextGenerator = new RandomTextGenerator;
|
||
|
|
||
|
function test() {
|
||
|
var target = document.getElementById("target");
|
||
|
var style = target.style;
|
||
|
|
||
|
var innerHTML = "<p>";
|
||
|
for (var i = 0; i < 5000; ++i)
|
||
|
innerHTML += randomTextGenerator.generate() + " ";
|
||
|
innerHTML += "</p>";
|
||
|
target.innerHTML = innerHTML;
|
||
|
|
||
|
style.display = "block";
|
||
|
style.width = "280px";
|
||
|
target.offsetLeft;
|
||
|
style.display = "none";
|
||
|
}
|
||
|
|
||
|
PerfTestRunner.measureRunsPerSecond({ run: test });
|
||
|
</script>
|
||
|
</body>
|
||
|
</html>
|