chromium/third_party/blink/perf_tests/layout/chapter-reflow-once-random.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";
            PerfTestRunner.forceLayout();
            style.display = "none";
        }

        PerfTestRunner.measureRunsPerSecond({
            description: "Measures performance of 3 layouts (using 2 different font-sizes) on a page containing random text.",
            run: test
        });
    </script>
</body>
</html>