<!DOCTYPE html>
<html>
<head>
    <title>Line breaking performance test</title>
    <script src="../resources/runner.js"></script>
</head>
<body>
    <pre id="log"></pre>
    <div id="target" style="width: 300px; display:none">
        L. Sergius Catilina, homo patricii generis, magna vi et animi et
        corporis, sed ingenio malo pravoque, praetorius, qui iam a. u. c. 689
        caedem consulum facere eaque facta rerum potiri constituerat, casu autem
        rem perficere prohibitus erat, ascitis ad consilium rei publicae
        opprimendae hominibus omnis generis perditissiis atque audacissimis, quos
        inopia, cupiditas, scelera stimulabant, consulatum in annum 691 p. u. c.
        petivit, sed cum, quae in animo habebat, perniciosa rei publicae consilia
        parum occultata essent, studiis bonorum omnium M. Tullius Cicero una cum
        C. Antonio consul factus est.  Qua re commotus L. Catilina M. Cicerone
        C. Antonio consulibus cupidius etiam sua consilia recepit, quibus maxime
        Ciceronis consulis diligentia restitit ad quem Catilinae eiusque sociorum
        consilia a Fulvia, muliere nobili, quae rem habebat cum Q. Curio, qui
        particeps fuit conspirationis illius, deferebantur.  Cum autem ista mala
        consilia contra salutem rei publicae a coniuratis inita apertius iam
        agitarentur, senatus consultum factum est, darent operam consules, ne quid
        res publica detrimenti caperet, effectumque est, ut Catilina spe
        consulatus, quem in proximum annum petebat, excideret, designarenturque
        D. Silanus et L. Murena.  Quae cum ita essent, L. Catilina, qui iam ante
        per Italiam ad homines seditiosos, maxime veteres L. Sullae milites,
        concitandos nuntios miserat, ad C. Manlium, qui Faesulas, in urbem
        Etruriae munitam, manum armatorum coegerat, proficisci constituit et
        bellum patriae inferre convocatisque nocte, quae inter VIII et VII Id.
        Novembres erat, sociis in domum M. Porci Laecae consilium, quod ceperat,
        aperuit.  Qua in congregatione nocturna duo equites Romani Ciceronem
        consulem illa ipsa nocte ante lucem, cum sicut salutaturi eius domum
        intrassent, interficiendum receperunt.  M. Cicero vitatis insidiis proximo
        die, qui fuit a. d.  VI Id.  Novembres, dispositis praesidiis senatum in
        templum Iovis Statoris convocavit, quo cum Catilina quasi sui purgandi
        causa venisset, Cicero eam, quae infra legitur, orationem in Catilinam
        vehementissime invehens habuit.
        Quo usque tandem abutere, Catilina, patientia nostra?  quam diu etiam
        furor iste tuus nos eludet?  quem ad finem sese effrenata iactabit
        audacia?  Nihilne te nocturnum praesidium Palati, nihil urbis vigiliae,
        nihil timor populi, nihil concursus bonorum omnium, nihil hic munitissimus
        habendi senatus locus, nihil horum ora voltusque moverunt?  Patere tua
        consilia non sentis, constrictam iam horum omnium scientia teneri
        coniurationem tuam non vides?  Quid proxima, quid superiore nocte egeris,
        ubi fueris, quos convocaveris, quid consilii ceperis, quem nostrum
        ignorare arbitraris?  O tempora, o mores! Senatus haec intellegit.  consul
        videt; hic tamen vivit.  Vivit?  immo vero etiam in senatum venit, fit
        publici consilii particeps, notat et designat oculis ad caedem unum
        quemque nostrum.  Nos autem fortes viri satis facere rei publicae videmur,
        si istius furorem ac tela vitemus.  Ad mortem te, Catilina, duci iussu
        consulis iam pridem oportebat, in te conferri pestem, quam tu in nos
        [omnes iam diu] machinaris.  An vero vir amplissumus, P. Scipio, pontifex
        maximus, Ti.  Gracchum mediocriter labefactantem statum rei publicae
        privatus interfecit; Catilinam orbem terrae caede atque incendiis vastare
        cupientem nos consules perferemus?  Nam illa nimis antiqua praetereo, quod
        C. Servilius Ahala Sp.  Maelium novis rebus studentem manu sua occidit.
        Fuit, fuit ista quondam in hac re publica virtus, ut viri fortes
        acrioribus suppliciis civem perniciosum quam acerbissimum hostem
        coercerent.  Habemus senatus consultum in te, Catilina, vehemens et grave,
        non deest rei publicae consilium neque auctoritas huius ordinis; nos, nos,
        dico aperte, consules desumus.  Decrevit quondam senatus, ut L. Opimius
        consul videret, ne quid res publica detrimenti caperet; nox nulla
        intercessit; interfectus est propter quasdam seditionum suspiciones
        C. Gracchus, clarissimo patre, avo, maioribus, occisus est cum liberis
        M. Fulvius consularis.  Simili senatus consulto C. Mario et L.  Valerio
        consulibus est permissa res publica; num unum diem postea L. Saturninum
        tribunum pl.  et C.  Servilium praetorem mors ac rei publicae poena
        remorata est?  At [vero] nos vicesimum iam diem patimur hebescere aciem
        horum auctoritatis.  Habemus enim huiusce modi senatus consultum, verum
        inclusum in tabulis tamquam in vagina reconditum, quo ex senatus consulto
        confestim te interfectum esse, Catilina, convenit.  Vivis, et vivis non ad
        deponendam, sed ad confirmandam audaciam.  Cupio, patres conscripti, me
        esse clementem, cupio in tantis rei publicae periculis me non dissolutum
        videri, sed iam me ipse inertiae nequitiaeque condemno.  Castra sunt in
        Italia contra populum Romanum in Etruriae faucibus conlocata, crescit in
        dies singulos hostium numerus; eorum autem castrorum imperatorem ducemque
        hostium intra moenia atque adeo in senatu videmus intestinam aliquam
        cotidie perniciem rei publicae molientem.  Si te iam, Catilina,
        comprehendi, si interfici iussero, credo, erit verendum mihi, ne non
        potius hoc omnes boni serius a me quam quisquam crudelius factum esse
        dicat.  Verum ego hoc, quod iam pridem factum esse oportuit, certa de
        causa nondum adducor ut faciam.  Tum denique interficiere, cum iam nemo
        tam inprobus, tam perditus, tam tui similis inveniri poterit, qui id non
        iure factum esse fateatur.  Quamdiu quisquam erit, qui te defendere
        audeat, vives, et vives ita, ut [nunc] vivis.  multis meis et firmis
        praesidiis obsessus, ne commovere te contra rem publicam possis.  Multorum
        te etiam oculi et aures non sentientem, sicut adhuc fecerunt,
        speculabuntur atque custodient.
    </div>
    <script>
        var target = document.getElementById("target");
        var style = target.style;
        var content = "L. Sergius Catilina, homo patricii generis, magna vi et animi et corporis, sed ingenio malo pravoque, praetorius, qui iam a. u. c. 689 caedem consulum facere eaque facta rerum potiri constituerat, casu autem rem perficere prohibitus erat, ascitis ad consilium rei publicae opprimendae hominibus omnis generis perditissiis atque audacissimis, quos inopia, cupiditas, scelera stimulabant, consulatum in annum 691 p. u. c. petivit, sed cum, quae in animo habebat, perniciosa rei publicae consilia parum occultata essent, studiis bonorum omnium M. Tullius Cicero una cum C. Antonio consul factus est.  Qua re commotus L. Catilina M. Cicerone C. Antonio consulibus cupidius etiam sua consilia recepit, quibus maxime Ciceronis consulis diligentia restitit ad quem Catilinae eiusque sociorum consilia a Fulvia, muliere nobili, quae rem habebat cum Q. Curio, qui particeps fuit conspirationis illius, deferebantur.  Cum autem ista mala consilia contra salutem rei publicae a coniuratis inita apertius iam agitarentur, senatus consultum factum est, darent operam consules, ne quid res publica detrimenti caperet, effectumque est, ut Catilina spe consulatus, quem in proximum annum petebat, excideret, designarenturque D. Silanus et L. Murena.  Quae cum ita essent, L. Catilina, qui iam ante per Italiam ad homines seditiosos, maxime veteres L. Sullae milites, concitandos nuntios miserat, ad C. Manlium, qui Faesulas, in urbem Etruriae munitam, manum armatorum coegerat, proficisci constituit et bellum patriae inferre convocatisque nocte, quae inter VIII et VII Id. Novembres erat, sociis in domum M. Porci Laecae consilium, quod ceperat, aperuit.  Qua in congregatione nocturna duo equites Romani Ciceronem consulem illa ipsa nocte ante lucem, cum sicut salutaturi eius domum intrassent, interficiendum receperunt.  M. Cicero vitatis insidiis proximo die, qui fuit a. d.  VI Id.  Novembres, dispositis praesidiis senatum in templum Iovis Statoris convocavit, quo cum Catilina quasi sui purgandi causa venisset, Cicero eam, quae infra legitur, orationem in Catilinam vehementissime invehens habuit. Quo usque tandem abutere, Catilina, patientia nostra?  quam diu etiam furor iste tuus nos eludet?  quem ad finem sese effrenata iactabit audacia?  Nihilne te nocturnum praesidium Palati, nihil urbis vigiliae, nihil timor populi, nihil concursus bonorum omnium, nihil hic munitissimus habendi senatus locus, nihil horum ora voltusque moverunt?  Patere tua consilia non sentis, constrictam iam horum omnium scientia teneri coniurationem tuam non vides?  Quid proxima, quid superiore nocte egeris, ubi fueris, quos convocaveris, quid consilii ceperis, quem nostrum ignorare arbitraris?  O tempora, o mores! Senatus haec intellegit.  consul videt; hic tamen vivit.  Vivit?  immo vero etiam in senatum venit, fit publici consilii particeps, notat et designat oculis ad caedem unum quemque nostrum.  Nos autem fortes viri satis facere rei publicae videmur, si istius furorem ac tela vitemus.  Ad mortem te, Catilina, duci iussu consulis iam pridem oportebat, in te conferri pestem, quam tu in nos [omnes iam diu] machinaris.  An vero vir amplissumus, P. Scipio, pontifex maximus, Ti.  Gracchum mediocriter labefactantem statum rei publicae privatus interfecit; Catilinam orbem terrae caede atque incendiis vastare cupientem nos consules perferemus?  Nam illa nimis antiqua praetereo, quod C. Servilius Ahala Sp.  Maelium novis rebus studentem manu sua occidit. Fuit, fuit ista quondam in hac re publica virtus, ut viri fortes acrioribus suppliciis civem perniciosum quam acerbissimum hostem coercerent.  Habemus senatus consultum in te, Catilina, vehemens et grave, non deest rei publicae consilium neque auctoritas huius ordinis; nos, nos, dico aperte, consules desumus.  Decrevit quondam senatus, ut L. Opimius consul videret, ne quid res publica detrimenti caperet; nox nulla intercessit; interfectus est propter quasdam seditionum suspiciones C. Gracchus, clarissimo patre, avo, maioribus, occisus est cum liberis M. Fulvius consularis.  Simili senatus consulto C. Mario et L.  Valerio consulibus est permissa res publica; num unum diem postea L. Saturninum tribunum pl.  et C.  Servilium praetorem mors ac rei publicae poena remorata est?  At [vero] nos vicesimum iam diem patimur hebescere aciem horum auctoritatis.  Habemus enim huiusce modi senatus consultum, verum inclusum in tabulis tamquam in vagina reconditum, quo ex senatus consulto confestim te interfectum esse, Catilina, convenit.  Vivis, et vivis non ad deponendam, sed ad confirmandam audaciam.  Cupio, patres conscripti, me esse clementem, cupio in tantis rei publicae periculis me non dissolutum videri, sed iam me ipse inertiae nequitiaeque condemno.  Castra sunt in Italia contra populum Romanum in Etruriae faucibus conlocata, crescit in dies singulos hostium numerus; eorum autem castrorum imperatorem ducemque hostium intra moenia atque adeo in senatu videmus intestinam aliquam cotidie perniciem rei publicae molientem.  Si te iam, Catilina, comprehendi, si interfici iussero, credo, erit verendum mihi, ne non potius hoc omnes boni serius a me quam quisquam crudelius factum esse dicat.  Verum ego hoc, quod iam pridem factum esse oportuit, certa de causa nondum adducor ut faciam.  Tum denique interficiere, cum iam nemo tam inprobus, tam perditus, tam tui similis inveniri poterit, qui id non iure factum esse fateatur.  Quamdiu quisquam erit, qui te defendere audeat, vives, et vives ita, ut [nunc] vivis.  multis meis et firmis praesidiis obsessus, ne commovere te contra rem publicam possis.  Multorum te etiam oculi et aures non sentientem, sicut adhuc fecerunt, speculabuntur atque custodient.";

        function test() {
            style.display = "block";

            target.appendChild(document.createTextNode(content));
            target.offsetLeft;

            target.appendChild(document.createTextNode(content));
            target.offsetLeft;

            target.appendChild(document.createTextNode(content));
            target.offsetLeft;

            target.appendChild(document.createTextNode(content));
            target.offsetLeft;

            target.appendChild(document.createTextNode(content));
            target.offsetLeft;

            target.appendChild(document.createTextNode(content));
            target.offsetLeft;

            target.appendChild(document.createTextNode(content));
            target.offsetLeft;

            target.appendChild(document.createTextNode(content));
            target.offsetLeft;

            target.appendChild(document.createTextNode(content));
            target.offsetLeft;

            target.appendChild(document.createTextNode(content));
            target.offsetLeft;

            target.appendChild(document.createTextNode(content));
            target.offsetLeft;

            style.display = "none";
            target.innerText = "";
        }

        PerfTestRunner.measureRunsPerSecond({ run: test });
    </script>
</body>
</html>
