• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!DOCTYPE html>
2<html>
3<head>
4    <title>Chapter reflow performance test: random text</title>
5    <script src="../resources/runner.js"></script>
6</head>
7<body>
8    <pre id="log"></pre>
9    <div id="target" style="width: 300px; display: none;">
10
11    </div>
12    <script>
13        var RandomTextGenerator = function() {
14            this.letters = [
15                String.fromCharCode(RandomTextGenerator.firstCharCode),
16                String.fromCharCode(RandomTextGenerator.firstCharCode),
17                String.fromCharCode(RandomTextGenerator.firstCharCode),
18                String.fromCharCode(RandomTextGenerator.firstCharCode),
19                String.fromCharCode(RandomTextGenerator.firstCharCode),
20                String.fromCharCode(RandomTextGenerator.firstCharCode),
21                String.fromCharCode(RandomTextGenerator.firstCharCode),
22                String.fromCharCode(RandomTextGenerator.firstCharCode),
23                String.fromCharCode(RandomTextGenerator.firstCharCode),
24                String.fromCharCode(RandomTextGenerator.firstCharCode)
25            ]
26        }
27
28        RandomTextGenerator.firstCharCode = 65; // 'A'
29
30        RandomTextGenerator.lastCharCode = 123; // 'z'
31
32        RandomTextGenerator.prototype.advance = function(index) {
33            var charCode = this.letters[index].charCodeAt(0);
34            var newCharCode = charCode + 1;
35            if (newCharCode > RandomTextGenerator.lastCharCode)
36                newCharCode = RandomTextGenerator.firstCharCode;
37            this.letters[index] = String.fromCharCode(newCharCode);
38            return charCode;
39        }
40
41        RandomTextGenerator.prototype.generate = function() {
42            var result = this.letters.join("");
43
44            var index = 0;
45            while (1) {
46                var charCode = this.advance(index);
47                if (charCode != RandomTextGenerator.lastCharCode)
48                    break;
49                ++index;
50            }
51
52            return result;
53        }
54
55        var target = document.getElementById("target");
56        var style = target.style;
57        var randomTextGenerator = new RandomTextGenerator;
58
59        function test() {
60            var target = document.getElementById("target");
61            var style = target.style;
62
63            var innerHTML = "<p>";
64            for (var i = 0; i < 5000; ++i)
65                innerHTML += randomTextGenerator.generate() + " ";
66            innerHTML += "</p>";
67            target.innerHTML = innerHTML;
68
69            style.display = "block";
70            style.width = "280px";
71            target.offsetLeft;
72            style.display = "none";
73        }
74
75        PerfTestRunner.measureRunsPerSecond({ run: test });
76    </script>
77</body>
78</html>
79