From b9679f84fb7a43a63760e548c57b2696daf048d0 Mon Sep 17 00:00:00 2001 From: yethee Date: Tue, 30 Apr 2024 13:37:42 +0300 Subject: [PATCH] Add performance tests --- .gitattributes | 1 + composer.json | 4 +- phpbench.json | 25 +++ psalm-baseline.xml | 7 + tests/Benchmark/EncoderBench.php | 73 +++++++++ tests/Benchmark/fixtures/baconipsum.txt | 199 ++++++++++++++++++++++++ tests/Benchmark/fixtures/cyrillic.txt | 19 +++ tests/Benchmark/fixtures/latin.txt | 19 +++ 8 files changed, 346 insertions(+), 1 deletion(-) create mode 100644 phpbench.json create mode 100644 tests/Benchmark/EncoderBench.php create mode 100644 tests/Benchmark/fixtures/baconipsum.txt create mode 100644 tests/Benchmark/fixtures/cyrillic.txt create mode 100644 tests/Benchmark/fixtures/latin.txt diff --git a/.gitattributes b/.gitattributes index f6d9227..a4e67d9 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4,6 +4,7 @@ /.editorconfig export-ignore /.gitattributes export-ignore /.gitignore export-ignore +/phpbench.json export-ignore /*.xml export-ignore /*.xml.dist export-ignore diff --git a/composer.json b/composer.json index ea95a0f..2fa2067 100644 --- a/composer.json +++ b/composer.json @@ -10,6 +10,7 @@ }, "require-dev": { "doctrine/coding-standard": "^12.0", + "phpbench/phpbench": "^1.2", "phpunit/phpunit": "^10.3", "psalm/plugin-phpunit": "^0.19.0", "vimeo/psalm": "5.23.1" @@ -39,6 +40,7 @@ "analyse": "psalm --stats", "cs-check": "phpcs", "cs-fix": "phpcbf", - "test": "phpunit --colors=always --no-coverage" + "test": "phpunit --colors=always --no-coverage", + "bench": "phpbench run -l dots --report=encode --retry-threshold=5 --profile=jit" } } diff --git a/phpbench.json b/phpbench.json new file mode 100644 index 0000000..44bc92d --- /dev/null +++ b/phpbench.json @@ -0,0 +1,25 @@ +{ + "$schema":"./vendor/phpbench/phpbench/phpbench.schema.json", + "runner.bootstrap": "vendor/autoload.php", + "runner.path": "tests/Benchmark", + "core.profiles": { + "jit": { + "runner.php_config": { + "zend_extension": ["opcache"], + "opcache.enable_cli": 1, + "opcache.enable": 1, + "opcache.jit_buffer_size": "32M", + "opcache.jit": 1255, + "xdebug.mode": "off" + } + } + }, + "storage.xml_storage_path": ".cache/phpbench/storage", + "report.generators": { + "encode": { + "generator": "expression", + "break": ["subject"], + "cols": ["benchmark", "subject", "set", "revs", "its", "mem_peak", "mode", "rstdev"] + } + } +} diff --git a/psalm-baseline.xml b/psalm-baseline.xml index fc0f4af..d29adab 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -10,4 +10,11 @@ + + + + + + + diff --git a/tests/Benchmark/EncoderBench.php b/tests/Benchmark/EncoderBench.php new file mode 100644 index 0000000..d6a92af --- /dev/null +++ b/tests/Benchmark/EncoderBench.php @@ -0,0 +1,73 @@ + */ + private array $tokens; + + /** @param array{fixture: non-empty-string, encoding: non-empty-string} $params */ + public function initialize(array $params): void + { + $provider = new EncoderProvider(); + $provider->setVocabCache(dirname(__DIR__, 2) . '/.cache/vocab'); + + $this->encoder = $provider->get($params['encoding']); + + $this->text = file_get_contents(__DIR__ . '/fixtures/' . $params['fixture'] . '.txt'); + $this->tokens = $this->encoder->encode($this->text); + } + + #[Bench\Subject] + public function encode(): void + { + $this->encoder->encode($this->text); + } + + #[Bench\Subject] + public function decode(): void + { + $this->encoder->decode($this->tokens); + } + + /** @return iterable */ + public static function provideEncodings(): iterable + { + foreach (self::ENCODINGS as $encoding) { + yield $encoding => ['encoding' => $encoding]; + } + } + + /** @return iterable */ + public static function provideFixtures(): iterable + { + foreach (self::TEXTS as $text) { + yield $text => ['fixture' => $text]; + } + } +} diff --git a/tests/Benchmark/fixtures/baconipsum.txt b/tests/Benchmark/fixtures/baconipsum.txt new file mode 100644 index 0000000..c03ebd8 --- /dev/null +++ b/tests/Benchmark/fixtures/baconipsum.txt @@ -0,0 +1,199 @@ +Nisi brisket prosciutto pariatur bresaola magna, meatloaf short ribs exercitation frankfurter enim ut laborum venison bacon. Bacon lorem eiusmod dolore doner enim. Est porchetta pig, short ribs minim sint enim pariatur ham hock kevin do ball tip fugiat strip steak. Ut magna landjaeger minim bacon labore. Bresaola burgdoggen dolore shoulder corned beef in, reprehenderit aliquip sint minim chislic. Reprehenderit dolore elit, eu pig tenderloin occaecat ground round culpa ad boudin velit venison cupidatat commodo. Est mollit pork chop, kielbasa eiusmod chislic dolore pork loin. + +Hamburger culpa nisi reprehenderit minim strip steak anim labore esse venison ad duis. Sint buffalo laborum, adipisicing leberkas corned beef ball tip ground round. Salami laborum est, strip steak t-bone aliquip tenderloin pork turkey ribeye nulla velit veniam ut. Pancetta chuck bresaola voluptate landjaeger. Deserunt mollit tri-tip cupidatat, tongue salami culpa laborum eiusmod pork chop. + +Fugiat voluptate pork chop dolore deserunt boudin qui andouille in. Swine beef shankle voluptate in. Et dolore eiusmod ham hock ut ea cupidatat officia beef salami laborum cow. Tenderloin jowl leberkas, tongue bacon andouille consectetur ut. + +Hamburger flank aute ut biltong dolore porchetta nulla nostrud aliquip magna turkey. Tri-tip culpa filet mignon turducken salami ipsum, sunt et boudin fugiat. Occaecat ipsum minim spare ribs capicola tempor dolor velit andouille fugiat pastrami. Tail shankle pastrami pork loin ut alcatra sunt nulla beef ribs boudin in. Rump labore short loin alcatra. Beef ribs ullamco chuck, prosciutto brisket alcatra porchetta. + +Corned beef consequat beef ribs swine magna drumstick, ham hock spare ribs dolore rump. Ipsum fatback brisket sirloin burgdoggen chislic nulla irure veniam consequat sausage duis. Landjaeger aute strip steak, ipsum consectetur cillum mollit in id filet mignon pork belly turkey dolore brisket voluptate. Sed spare ribs sint, sirloin short loin qui frankfurter beef ribs. Prosciutto mollit officia spare ribs porchetta culpa voluptate deserunt. + +Pork chop cupidatat ham in magna occaecat turducken ad chuck. Tempor fugiat exercitation culpa chicken pancetta t-bone meatloaf aliquip ribeye pork belly tongue mollit venison excepteur. Nisi rump chislic irure turducken, shankle jowl pork loin reprehenderit pork kielbasa ham hock. Cow ribeye shoulder, esse in cillum dolore ea excepteur filet mignon mollit biltong swine shank frankfurter. Alcatra reprehenderit culpa voluptate ground round sirloin, occaecat rump cupidatat pork loin ex pork ut capicola. + +Laborum sunt excepteur, jowl prosciutto nulla elit est. Et spare ribs ham hock tail. Non landjaeger shank, beef ribs veniam nulla chislic eiusmod capicola venison voluptate. Est sed cupim sausage, salami tongue ham hock tenderloin veniam dolore. + +Eu culpa magna aute corned beef, enim prosciutto dolor hamburger buffalo. Buffalo flank pastrami filet mignon t-bone biltong pork belly tri-tip irure chicken ullamco ipsum frankfurter. Pig tri-tip alcatra, laborum laboris fugiat picanha turkey cow ad hamburger sed bresaola pork loin. Do irure ground round ullamco frankfurter sunt. + +Occaecat ut aliquip, filet mignon ham landjaeger proident biltong. Aute dolore ut tail sed culpa. Exercitation ad prosciutto tempor pancetta ground round commodo andouille tri-tip pig in beef do turkey. Sausage turkey pig tempor, ut beef ribs exercitation boudin adipisicing minim ipsum buffalo picanha id. + +Et quis sunt elit id proident officia beef ribs. Brisket veniam salami, minim anim ut mollit landjaeger andouille venison chislic ball tip culpa kielbasa. Ground round reprehenderit velit chuck non t-bone. Pork ball tip picanha rump beef, commodo nisi landjaeger pork belly id ut ut do ribeye non. + +Chicken commodo short ribs, dolore buffalo brisket prosciutto leberkas andouille ham hock alcatra. Ribeye in cupim cow beef ribs laborum chicken jowl do shoulder sirloin andouille ham. Reprehenderit dolore sausage, short ribs fatback eiusmod culpa anim shank cupidatat buffalo eu excepteur id. Laborum swine beef voluptate ut eiusmod. Shoulder id leberkas, ham chislic duis beef exercitation lorem. Excepteur filet mignon pancetta ut cupidatat. Dolor laboris deserunt ex, officia minim burgdoggen pig nulla in pork. + +Veniam ullamco nostrud sunt corned beef, chislic prosciutto tempor t-bone tenderloin ham hock. Spare ribs sint minim bacon, leberkas ut fatback buffalo meatball ipsum t-bone. Jowl enim chuck jerky quis, pork voluptate cupidatat shankle fatback tongue pig venison boudin. Pork chop aute do laborum tongue. Nisi in ball tip reprehenderit swine dolore doner jerky labore esse. Chislic minim spare ribs quis. + +Fatback ad hamburger est tempor. Esse tongue anim spare ribs, landjaeger nostrud deserunt. Exercitation burgdoggen sint pariatur swine laboris shank buffalo ipsum. Laboris jowl pork chop tail, qui eiusmod enim frankfurter beef ribs magna strip steak occaecat ham hock. Nisi sint t-bone enim et, reprehenderit jowl porchetta shoulder. Jowl cillum fugiat, do elit ut chuck ea velit veniam qui pork belly. In consequat capicola culpa. + +Tenderloin salami landjaeger cupidatat bacon. Picanha chicken magna short loin ad quis. Mollit exercitation ham hock jerky prosciutto ea quis. Bresaola labore jowl ullamco ut ipsum kevin duis magna ribeye short loin. Strip steak shank fatback doner, turkey brisket pork chop. Dolor nisi voluptate t-bone prosciutto proident salami sirloin fugiat ham hock. Prosciutto enim venison, cupidatat consequat strip steak cupim burgdoggen shank. + +Est strip steak laboris, sirloin consectetur minim tri-tip aute commodo ad chuck shankle burgdoggen pork. Ball tip laboris ut dolor sed pork chop. Culpa commodo frankfurter, leberkas elit occaecat esse pastrami ut. Fatback sirloin occaecat magna anim officia. + +Laboris cupidatat ribeye, burgdoggen landjaeger adipisicing chicken short ribs cupim sint. Sirloin deserunt ut, tenderloin eiusmod ex lorem short ribs laborum shoulder dolor. In fatback beef qui. Pork loin landjaeger enim et, proident velit burgdoggen kielbasa reprehenderit swine. Aliquip beef ribs ham rump sint laborum fugiat, ham hock dolore in chuck. Venison tri-tip meatball sirloin filet mignon, ut bresaola excepteur beef id chuck. + +Short ribs tempor pariatur spare ribs excepteur sausage corned beef shank officia meatloaf. Proident pork jerky sunt exercitation biltong capicola consectetur. Short ribs ex sunt chuck pariatur kevin. Occaecat sausage venison cupidatat pastrami in magna id tenderloin beef ribs. + +Ham culpa corned beef, officia chuck pork chop irure cupidatat tongue sunt quis. Laboris ipsum dolore, incididunt officia dolore ut pork belly velit. Biltong fugiat incididunt shoulder, pastrami tempor chuck aliqua pork belly burgdoggen swine ullamco beef ribs. Kevin jerky ullamco, prosciutto strip steak tempor ut beef picanha. + +Cow brisket leberkas aliqua, duis incididunt in ground round pariatur chislic non eu velit. Aliquip ad ex rump, ball tip prosciutto salami meatball picanha officia commodo sunt. Excepteur anim meatloaf porchetta. Salami laboris alcatra andouille est. Doner strip steak et, rump landjaeger buffalo irure sausage pancetta tempor laborum incididunt. Excepteur pork belly veniam, occaecat ribeye eu duis pancetta jowl sausage in eiusmod aute mollit ea. + +Alcatra quis aliquip cupim, pariatur mollit in esse dolore flank ad. In picanha incididunt, ham ex cow ad turkey chicken aliquip eu elit meatball swine sunt. Quis consequat turkey, enim kielbasa adipisicing salami chuck short ribs andouille. Venison picanha nisi, rump tongue nulla shoulder ea cupim dolor et leberkas. Enim proident t-bone beef ribs. + +Spare ribs in pig in shankle flank burgdoggen deserunt anim commodo cillum irure leberkas. Swine chicken ham, pig eiusmod cow reprehenderit sed in. Ipsum non pork kielbasa aliquip alcatra. Flank magna meatball buffalo elit meatloaf. Bresaola swine ground round cow. + +Laborum consequat velit exercitation chicken leberkas shoulder dolore labore. Non pork belly leberkas turducken. Capicola sausage meatball, cupim prosciutto sunt andouille. Incididunt ham beef ribs leberkas ut burgdoggen occaecat sirloin proident t-bone. Venison capicola ullamco rump, laboris landjaeger cillum pancetta. Ut ad mollit boudin sed meatball rump. + +Beef rump ea est cupidatat lorem aliqua in laboris shank. Venison aute ullamco elit. Bacon consectetur aliqua chislic cillum ball tip deserunt reprehenderit sausage et ham proident meatloaf. Filet mignon frankfurter velit qui corned beef flank. Incididunt biltong alcatra bresaola. Turkey in tri-tip chicken, ea laborum doner exercitation. + +Excepteur ut sunt, consequat landjaeger irure shankle venison aliquip chicken meatloaf. Hamburger incididunt chicken capicola chuck. Proident et kevin pariatur cupidatat cow meatloaf sunt swine filet mignon pig cupim esse. Ea elit aliquip, laboris alcatra salami proident incididunt meatball chuck spare ribs quis. Landjaeger culpa deserunt salami. Venison veniam strip steak chuck frankfurter meatball ball tip officia qui short loin sint ex prosciutto. Swine dolore eiusmod qui ribeye non picanha culpa jowl et brisket ut sausage consectetur deserunt. + +Meatloaf ipsum bresaola ea corned beef porchetta tail landjaeger andouille non ut flank ad tongue ut. Aliquip commodo consectetur duis ad laboris andouille cow short loin doner. Ham fugiat venison, picanha chuck excepteur elit dolore ball tip exercitation turkey tenderloin. Ball tip tempor cupim qui ham ullamco, sint anim alcatra. + +Tongue fatback ut cillum, et chuck chicken shank prosciutto tri-tip culpa turducken anim proident pork chop. Nostrud alcatra biltong, irure eiusmod pastrami kevin. Tri-tip shoulder ut, rump cillum deserunt jowl in. Occaecat dolore ex incididunt pork belly fugiat. Sirloin flank spare ribs quis esse burgdoggen turducken beef ribs nulla biltong short ribs ea dolor qui. Buffalo labore eu, dolor irure tenderloin chicken sausage minim ipsum salami consequat in pariatur. Kevin salami shankle esse commodo t-bone, hamburger anim shank turkey. + +Quis qui incididunt prosciutto doner frankfurter ut esse shank. Kielbasa culpa pig ullamco. Pork belly est doner sint kielbasa. In sirloin pork laborum sausage, anim duis bresaola jerky commodo mollit pork loin. Elit turducken meatball, anim culpa shankle spare ribs pork loin rump drumstick est consectetur shank cupidatat nisi. + +Commodo capicola officia sint cillum minim, ball tip aute magna swine ea jowl flank. Cow pariatur pig, aliquip deserunt et laborum tri-tip hamburger occaecat. Venison kevin chuck flank tri-tip filet mignon ut meatball. Dolore deserunt chislic aliquip salami filet mignon tail strip steak minim swine sint consectetur est hamburger velit. Ground round aute kevin veniam. Beef ribs pork ham, nostrud prosciutto enim cupim occaecat aute nulla ex capicola. + +Laborum cow kevin pork belly ut beef buffalo culpa incididunt. Capicola veniam deserunt, cow adipisicing cillum kielbasa et ball tip. In ut bresaola drumstick swine deserunt flank voluptate. Sed hamburger chicken landjaeger pork belly ut picanha leberkas laboris consequat excepteur. Laborum leberkas chicken, buffalo enim ex short loin. + +Ground round ad fugiat ham alcatra, in culpa turducken deserunt reprehenderit doner. Short loin enim brisket, meatball occaecat tri-tip quis aute capicola pork chop jerky bresaola consectetur chicken chislic. Sed turducken laborum spare ribs, ipsum frankfurter sirloin capicola officia beef tri-tip. Pig ipsum capicola ea enim. Flank shankle tempor in, landjaeger hamburger duis picanha aute eiusmod bacon pig. Sed adipisicing pastrami brisket esse voluptate t-bone in kielbasa. + +Pork sed bacon, occaecat consequat filet mignon beef ribeye drumstick pork chop quis rump. Esse cupim ham hock ut frankfurter, t-bone capicola ham shankle jowl officia. Alcatra incididunt shankle hamburger tri-tip. Culpa ipsum chislic irure quis sed ex sirloin. + +Irure deserunt lorem anim nisi ut. Swine sed alcatra do. Aliquip occaecat spare ribs laboris magna kevin exercitation laborum tail enim. Aliquip adipisicing spare ribs mollit sint strip steak. + +Quis laborum minim turkey, eu tempor commodo. Ground round ut consequat magna enim pork belly veniam kevin boudin labore. Anim spare ribs ham pork ea chuck aliqua dolor cillum bresaola. Turducken tempor adipisicing, ball tip turkey chicken esse ad mollit dolore. Cupim venison landjaeger, bacon andouille qui turkey id short ribs pariatur aliquip in shank spare ribs. + +Fugiat proident ribeye tenderloin t-bone. Pariatur lorem nulla filet mignon sint. Short loin salami pork loin picanha ex kielbasa pork bacon ut elit rump exercitation anim flank. Dolore veniam deserunt, minim beef porchetta brisket exercitation aliquip. + +Ribeye nisi fugiat, qui porchetta beef ut id shankle deserunt officia esse. Exercitation tri-tip in dolore venison proident turducken frankfurter tempor ipsum. Meatball pork enim, fugiat eiusmod eu voluptate tongue quis flank. Quis tail ribeye pork chop lorem hamburger capicola biltong. Leberkas enim ex velit corned beef tri-tip proident frankfurter jowl exercitation. Beef ribs mollit drumstick proident ribeye in. Sint occaecat enim ea tempor biltong officia jowl cupidatat. + +Sausage occaecat ea, doner proident ham hock minim magna adipisicing porchetta. Eu fugiat non commodo aliqua. Velit ullamco laboris prosciutto consequat. Reprehenderit chicken leberkas commodo buffalo ham chislic. + +Leberkas veniam irure swine, ham hock nisi pork sausage do pork loin cupim short loin buffalo quis magna. Pariatur hamburger prosciutto ball tip. In chislic sausage, excepteur cillum anim cupim frankfurter flank jowl doner turkey leberkas pork. Labore ut velit alcatra est commodo short ribs biltong in. + +Duis pork short loin, brisket alcatra meatball kielbasa chislic elit rump. Occaecat rump anim, ball tip tempor proident doner quis corned beef flank aliquip. Ut eiusmod meatloaf, dolore ham velit et tongue buffalo ut salami meatball reprehenderit veniam. Kielbasa capicola cow et ipsum drumstick. Consequat officia venison irure turducken deserunt, mollit salami do porchetta voluptate esse buffalo. + +Leberkas doner tri-tip, aliqua ad fatback biltong. Pork loin frankfurter ipsum, pork aute burgdoggen aliqua ex reprehenderit tempor officia kevin magna sed. In ut laborum, burgdoggen tenderloin filet mignon fugiat anim elit. Dolore tenderloin pig est, venison occaecat irure salami swine short ribs commodo. Eu porchetta hamburger, spare ribs enim flank salami est jerky. Shoulder nulla t-bone in irure, ipsum dolore lorem consequat bacon andouille. + +Chislic t-bone flank id tri-tip ribeye biltong filet mignon sint jowl. Jerky hamburger cupim, swine sunt elit aliqua corned beef doner sint. Beef corned beef ball tip ex qui tri-tip, mollit bresaola kevin reprehenderit sunt labore laboris cupim. Porchetta ground round hamburger eu sausage tail tongue. Officia chislic in t-bone cow, reprehenderit pork chop laboris irure labore meatloaf turducken. Lorem t-bone prosciutto porchetta tri-tip. + +Mollit esse porchetta, cillum pig strip steak ut cow ham hock proident in laboris biltong. Pastrami aute shank sirloin strip steak tail landjaeger non ham dolore sunt. Beef filet mignon nulla elit ribeye meatloaf sirloin pork loin ham consequat incididunt chuck nisi. Frankfurter consequat sint aliquip laboris minim, aute rump sed. Sed filet mignon bresaola proident porchetta venison rump. Ut labore short loin pastrami mollit. Nostrud velit cillum shoulder pork loin reprehenderit nulla, labore jerky aliqua in ex filet mignon. + +Lorem enim pastrami, filet mignon short ribs ad fugiat. Velit chicken chislic in. Proident adipisicing ribeye strip steak excepteur do. Excepteur aliqua officia laboris beef ribs, elit doner. Incididunt sed adipisicing corned beef shank meatloaf tail flank ad non nostrud cillum. Boudin short loin velit short ribs pig exercitation swine ball tip officia. + +Velit aliquip enim, nisi shoulder pancetta jowl tri-tip bresaola jerky beef irure meatball. Sed burgdoggen frankfurter, ham shankle labore lorem venison tri-tip beef consectetur meatball veniam. Hamburger esse pork loin, t-bone tri-tip landjaeger ham hock et est flank deserunt meatloaf venison. Ham bacon sint prosciutto cupidatat qui officia ut biltong id tempor, dolore venison reprehenderit short ribs. Aliqua eu minim, ham hock culpa picanha esse duis tail magna landjaeger flank beef ribs consequat. + +Laborum incididunt pig, ullamco sirloin prosciutto spare ribs cow. Leberkas bacon incididunt, ut id voluptate alcatra fatback est ex veniam rump nulla. Duis qui ut ham eiusmod sint flank meatball. Picanha quis anim, lorem tri-tip spare ribs eu pancetta aute enim hamburger aliqua culpa commodo. Pork nostrud officia, minim ham hock pig voluptate ipsum ut chuck capicola andouille. Commodo esse do sint porchetta exercitation meatloaf doner proident hamburger. + +Nostrud strip steak mollit irure, venison cupim tri-tip elit tail spare ribs. Flank laboris voluptate chicken turkey magna. Pastrami ribeye swine laborum reprehenderit cupidatat. T-bone duis cillum pork alcatra fatback veniam. Excepteur in culpa strip steak ullamco lorem picanha. Ribeye laboris strip steak quis rump consequat salami sunt elit voluptate id culpa in turkey bacon. In lorem eiusmod chicken, non ut ex tenderloin pork belly ullamco meatloaf ipsum. + +Enim voluptate laboris beef, jerky pork chop ham irure sed ipsum. Pariatur sed proident meatloaf pork chop deserunt filet mignon ad labore excepteur. Laboris ball tip aliqua cupim meatloaf, tenderloin mollit jowl salami irure nostrud ad alcatra bacon minim. Veniam pork tongue, burgdoggen magna strip steak pork belly swine shoulder leberkas dolor corned beef sunt duis shankle. Ut tenderloin proident cow, shoulder pork loin beef pig brisket irure strip steak est cupidatat. + +Pork tail buffalo, ex duis andouille kevin cow sirloin bresaola elit. Kevin chuck tenderloin laboris chislic. Commodo pariatur occaecat andouille. Laborum burgdoggen commodo aliqua landjaeger ham eiusmod leberkas ribeye quis ut pork belly enim labore. Eiusmod sirloin id sed beef ribs. Biltong andouille shankle, irure elit id laboris chislic doner reprehenderit swine spare ribs burgdoggen. + +Venison strip steak ipsum drumstick biltong capicola consequat tongue fatback nostrud pariatur. Drumstick dolore picanha, est mollit t-bone chuck incididunt filet mignon ut. Shankle tongue aute voluptate, beef ribs venison pig sausage ut veniam. Proident short ribs cupim, ball tip doner exercitation filet mignon minim leberkas short loin ground round buffalo venison occaecat pork belly. Bacon occaecat prosciutto commodo et meatloaf aliquip ut biltong dolore eiusmod meatball alcatra. + +T-bone shank rump, hamburger chicken excepteur salami short loin eu kielbasa bresaola minim nisi mollit. Strip steak commodo meatloaf doner prosciutto exercitation meatball, labore consectetur. In incididunt minim, exercitation t-bone corned beef tenderloin ad drumstick landjaeger tempor nulla meatball boudin aliquip. Ribeye eu chislic, ham hock buffalo sirloin deserunt picanha cillum et in mollit exercitation. + +Corned beef burgdoggen id in anim alcatra beef ribs velit aute ribeye pig in laboris officia. Id ribeye aliqua porchetta minim shankle cillum commodo est fugiat. Voluptate shankle turkey duis swine shoulder, prosciutto dolore jowl sunt exercitation magna in velit incididunt. Proident sausage tempor cupidatat do t-bone. Nisi fatback buffalo, ea biltong sunt t-bone ground round. + +Corned beef picanha sirloin t-bone brisket, salami chicken veniam excepteur rump consequat capicola short ribs pancetta dolor. Drumstick fatback pork chop in, sunt frankfurter qui porchetta. Turkey kielbasa ut burgdoggen strip steak boudin do porchetta commodo tenderloin dolor. Turducken eiusmod dolor anim brisket short ribs. Porchetta doner ullamco officia meatloaf reprehenderit beef, shank laboris. Et andouille nostrud, voluptate boudin prosciutto duis non chicken. + +Landjaeger beef beef ribs magna ham hock minim biltong spare ribs reprehenderit lorem veniam bresaola. Eu cillum tongue in sirloin spare ribs beef kevin aliquip nisi. Short loin elit culpa id chuck. Quis ut irure porchetta. Enim ipsum alcatra, dolor kielbasa voluptate chicken drumstick salami reprehenderit veniam sed andouille pork. + +Nisi ad landjaeger, ipsum aliqua consequat beef turkey. Anim non nostrud chicken, boudin tri-tip tenderloin beef nulla jerky labore andouille. Sed ut short ribs aliquip shoulder aliqua capicola shankle adipisicing deserunt picanha culpa bacon. Tri-tip fugiat culpa proident. + +Ipsum commodo nostrud t-bone shankle lorem sint short ribs turkey occaecat eiusmod tempor aliqua strip steak. Bacon elit drumstick beef adipisicing cupidatat eiusmod pastrami ad in aliqua. Esse biltong turducken mollit. Cupidatat andouille kevin shankle dolor labore, in occaecat porchetta swine. + +Tongue laboris salami nostrud, nisi enim adipisicing pancetta shankle pariatur. Tri-tip strip steak ipsum eiusmod veniam occaecat duis corned beef quis pastrami do. Ex hamburger pig andouille incididunt. Do occaecat tongue dolore tempor ribeye aute nulla elit porchetta swine fugiat salami. Cow bacon enim prosciutto dolor sirloin eiusmod kielbasa nulla lorem officia non. + +Shank prosciutto cupidatat ut, kielbasa t-bone salami occaecat ribeye magna meatloaf short ribs. Bacon strip steak esse dolor, shank adipisicing lorem incididunt cupim brisket et pancetta chislic id. Nulla alcatra in pariatur, tail officia burgdoggen beef ribs ball tip tenderloin ut voluptate jowl ut. Tongue do shankle sed incididunt nostrud shank hamburger pariatur picanha pig sint, tri-tip ipsum. Shank tail elit jerky pariatur doner. Tri-tip capicola jerky fatback landjaeger qui. + +Chislic short loin hamburger eiusmod shank consequat. Ad sunt nostrud in, magna lorem aliquip consequat labore reprehenderit. Meatloaf burgdoggen capicola tail andouille, prosciutto bacon swine filet mignon alcatra. Aliquip chuck shoulder buffalo venison mollit dolor swine beef tri-tip occaecat minim short loin aute est. In sirloin t-bone dolore leberkas fugiat turkey. Ham pork belly dolore beef ex culpa frankfurter tri-tip magna proident duis ad filet mignon cupim. + +Corned beef duis swine enim. Alcatra spare ribs pig anim, kielbasa chislic landjaeger dolore tempor. Proident meatball irure enim. Shank shoulder dolore, esse filet mignon ea tri-tip velit pork loin short loin et. + +Meatball do ham hock spare ribs, ea prosciutto beef short loin voluptate dolor consectetur frankfurter meatloaf landjaeger. Pancetta consectetur aute tri-tip anim, sausage in. Ad esse commodo, officia chuck turducken biltong porchetta turkey. Landjaeger aliqua porchetta, chicken rump occaecat sausage. + +Nisi ullamco nulla, fugiat in duis ground round ut elit picanha voluptate t-bone pork chop pariatur. Drumstick exercitation turkey nostrud reprehenderit. Reprehenderit brisket culpa cow, biltong velit sirloin pork belly occaecat elit beef drumstick. Magna ad eiusmod tongue turkey. Short loin occaecat pork belly sirloin adipisicing capicola chuck incididunt ullamco ex nisi rump sint chislic hamburger. Do dolore cupidatat, short ribs ball tip capicola laboris ham tri-tip meatball. Flank tongue enim ham hock ut turkey. + +Pork strip steak non kielbasa. Mollit laborum occaecat sint. Strip steak anim corned beef consequat non pork loin, tenderloin est beef ribs excepteur bresaola turkey fugiat commodo. Cow lorem sint non ham buffalo aliqua sirloin id. Minim pork belly lorem nulla commodo salami. Anim buffalo dolor, pork belly cillum laboris ribeye chislic ad strip steak non. Kevin occaecat burgdoggen fugiat. + +Enim swine pancetta prosciutto, hamburger strip steak buffalo. Minim turducken bresaola cow ball tip beef ribs pancetta tempor ex magna ullamco. Prosciutto jerky cillum mollit pork ham hock ground round bacon chuck non porchetta tempor brisket ball tip chislic. Quis ground round swine, frankfurter exercitation ex commodo buffalo voluptate. Drumstick eu shankle porchetta enim alcatra, ad ground round ut mollit. Nisi jowl picanha ham hock cupidatat andouille labore. + +Laborum ipsum cupidatat tri-tip consectetur picanha in. Shank dolor commodo pork chop nisi, minim reprehenderit. Nisi fatback bresaola, shoulder dolor quis ex tongue est aliqua officia alcatra deserunt eiusmod. Incididunt porchetta ad cupidatat magna short ribs. + +Incididunt commodo frankfurter prosciutto. Corned beef pariatur dolore incididunt duis ball tip tri-tip bacon. Rump bacon eu est. Capicola pork buffalo ham hock, pork chop laboris picanha boudin brisket dolore kevin ball tip aliquip spare ribs. Kielbasa velit exercitation rump, chislic doner pastrami. Et buffalo kevin, ullamco fugiat anim sausage shankle cow cupim tenderloin eiusmod capicola. + +Enim dolore laborum, rump pancetta dolor ut pig tongue turkey. Consectetur turkey laborum adipisicing ipsum. Spare ribs eu cillum kevin, nulla eiusmod exercitation pork loin. Ham filet mignon ullamco sunt occaecat brisket short ribs nulla tongue ea leberkas pork chop biltong turducken swine. Swine exercitation veniam ad andouille prosciutto salami lorem. Qui anim brisket porchetta, dolor beef est. + +Alcatra nostrud ham cow, tempor pig est short ribs magna. Jowl fatback fugiat incididunt eu, anim pancetta elit nulla meatloaf pork chop turducken. Tongue mollit in voluptate, ham deserunt landjaeger incididunt. Picanha tempor officia aliquip lorem anim chislic spare ribs consequat adipisicing proident shank reprehenderit shankle laboris. Pariatur et frankfurter veniam culpa, ut hamburger voluptate. Cupim dolore laborum ham hock ground round. Burgdoggen t-bone bacon turducken ut. + +Sirloin laboris flank, shankle turducken qui esse kevin shoulder. Corned beef adipisicing pig exercitation consectetur meatball, velit pancetta pork belly flank. Commodo ground round aliquip hamburger quis ut voluptate prosciutto pastrami. Minim turkey incididunt strip steak reprehenderit bacon shankle fugiat veniam shank. Officia landjaeger id, prosciutto bacon ham hock deserunt meatball. Esse ut adipisicing, pastrami pork chop t-bone buffalo excepteur bresaola laboris frankfurter ut ipsum eiusmod. + +Ham hock lorem do veniam ex filet mignon commodo fatback buffalo ball tip landjaeger ullamco beef ribs proident biltong. Cow quis occaecat cillum fugiat, ullamco t-bone reprehenderit labore eu buffalo in sausage flank sed. Magna in short loin fatback bresaola. T-bone ipsum consequat quis do deserunt, andouille pork sint cupim pariatur fugiat sausage mollit. Ullamco ipsum boudin non tail spare ribs eu chislic pork loin. Tail velit eiusmod tri-tip chuck. Adipisicing pork chop dolor pancetta. + +Shoulder ex officia, sausage anim cupim velit boudin eu pork belly. Landjaeger qui in, jerky shankle rump elit filet mignon hamburger. Excepteur ribeye brisket, strip steak cillum sirloin sunt meatball qui ut occaecat in. Laborum fugiat chuck fatback bacon, consequat buffalo id. Ball tip buffalo consequat pig in bresaola filet mignon in chuck frankfurter chicken. + +Fugiat deserunt tail burgdoggen, ut shankle hamburger doner picanha porchetta landjaeger dolor capicola. Tempor dolor proident, pariatur sunt beef mollit ea pork eu meatloaf shoulder velit pork belly turkey. Chicken duis ut id ground round aliqua anim shankle aliquip pork loin. Sirloin flank bacon exercitation boudin ut mollit veniam drumstick hamburger picanha esse. Filet mignon ad proident, ut velit brisket chicken sed consectetur. Shoulder pariatur frankfurter drumstick andouille ut corned beef. + +Leberkas proident laboris ipsum. Meatloaf leberkas aute bresaola dolore ham hock lorem ut buffalo cow pork brisket ribeye. Ribeye ea tongue consectetur pancetta. Drumstick id rump, eiusmod aute minim anim culpa cow laboris strip steak enim tongue chuck velit. In aliqua biltong occaecat leberkas proident. Pig tail pork chop culpa, id do ad. Nisi chislic picanha, venison culpa in esse sed in irure laborum pork loin magna. + +Officia ut elit drumstick turducken culpa pig in ground round. Corned beef short loin sint nostrud pariatur kielbasa boudin ribeye labore commodo kevin aliqua meatloaf. Frankfurter pork loin do adipisicing exercitation aute venison hamburger bacon. Shank eiusmod ad leberkas adipisicing, t-bone swine in ham magna sirloin duis et qui. Chuck t-bone ipsum turducken. Pig commodo dolore boudin ut. Chislic ground round spare ribs, officia chicken pork mollit excepteur nisi ham pork chop. + +Andouille shank consectetur, nulla chuck filet mignon salami eiusmod ea. Ball tip porchetta nulla chuck, consectetur ham hock ut. Cupidatat short loin occaecat boudin turkey irure, ullamco voluptate. Ea ut cupidatat, alcatra sint venison pancetta pork belly. Landjaeger frankfurter andouille, in bresaola filet mignon kevin deserunt fugiat spare ribs meatball prosciutto ribeye commodo. Laborum esse duis consectetur ut pork loin. + +Tempor pork loin in ea beef pastrami, aliqua landjaeger short ribs minim t-bone andouille brisket shankle. Buffalo est cupidatat et boudin meatball. Dolore turkey esse boudin meatloaf. Landjaeger exercitation irure drumstick adipisicing pig enim ipsum shank cupidatat andouille buffalo voluptate ut. Hamburger aliquip brisket, picanha rump tenderloin leberkas. Tenderloin duis tri-tip, buffalo pancetta consequat qui chislic short loin in dolor et cillum eiusmod. Alcatra eiusmod filet mignon aliquip, turkey incididunt kevin swine fugiat. + +Aliqua quis velit beef ribs hamburger. In ground round filet mignon drumstick beef ut. Sausage exercitation ground round culpa, aliquip rump pork enim burgdoggen eiusmod drumstick swine. Kielbasa turkey qui, enim ham buffalo officia burgdoggen. Meatloaf velit shoulder nostrud short loin aliqua ham ut ball tip ipsum sint kielbasa. In ham hock commodo leberkas, magna swine consectetur chuck picanha enim id tail alcatra turkey. + +Exercitation pastrami pork salami in sint, ipsum dolore pancetta. Short loin shoulder biltong porchetta, turducken laboris tongue quis beef minim enim exercitation t-bone ut prosciutto. Tail fatback enim in dolore turkey, landjaeger sint fugiat kevin. Pastrami spare ribs corned beef andouille esse sirloin. + +Ex ribeye mollit exercitation et ut quis boudin in leberkas lorem prosciutto. Cupim ut pork, pig deserunt venison shoulder in id fugiat adipisicing fatback qui cow chicken. Picanha tongue velit, deserunt brisket bacon pork exercitation filet mignon minim biltong alcatra et pastrami dolore. Fatback magna et turducken. + +Pariatur nisi proident rump. In in voluptate commodo. Biltong kevin burgdoggen boudin nostrud eiusmod ball tip spare ribs drumstick capicola magna enim. Veniam shank pork chop, tempor short loin ham salami labore kevin kielbasa sed dolore sausage bacon. + +Boudin burgdoggen aute velit pork chop fatback excepteur beef ut spare ribs. Minim sed venison, fugiat ea short ribs turkey velit pork belly enim tail landjaeger. Est shoulder anim ut nisi pancetta kielbasa, cupidatat ex ground round ad pariatur veniam do landjaeger. Consectetur nulla shank jowl burgdoggen spare ribs, jerky est pork belly short ribs beef aliqua velit. Capicola dolor frankfurter beef, turducken ipsum tongue flank sint fatback laboris. + +Landjaeger ham hock nulla pastrami. Aliqua ea id, chuck in quis jerky. Shankle excepteur duis, aliquip chislic qui ribeye flank elit brisket aliqua aute irure cillum alcatra. Flank alcatra est, proident cupidatat tri-tip reprehenderit pariatur tempor kielbasa boudin. Nostrud ham hock andouille, turkey pork short ribs irure chuck. + +Chicken shank ball tip officia. Sunt reprehenderit strip steak biltong laborum, buffalo nisi et short loin cupidatat cillum magna doner frankfurter. Velit porchetta et, tongue swine sint pastrami alcatra minim cow. Jerky consectetur sausage, spare ribs proident kielbasa in ipsum anim filet mignon meatball picanha cow magna boudin. Filet mignon biltong sint shank beef ribs jerky reprehenderit sausage eu shankle ground round jowl qui ut cow. Beef alcatra andouille, sausage jerky burgdoggen biltong hamburger sed t-bone ham hock. Pastrami pork chop ullamco, jowl non ut veniam frankfurter excepteur et sed. + +In consequat velit ex nisi, biltong veniam leberkas beef jowl shoulder ullamco fugiat pig. Esse picanha pork, ipsum biltong hamburger qui ad flank short loin drumstick deserunt nisi sausage. Ham hock proident velit, landjaeger tempor shoulder veniam ground round tri-tip prosciutto labore pariatur exercitation pork elit. Drumstick minim in strip steak. Voluptate andouille capicola leberkas. + +Spare ribs brisket enim tongue excepteur sirloin, corned beef adipisicing. Flank tenderloin burgdoggen ea pork salami duis tail kielbasa cupim pork chop shoulder pancetta. Andouille duis chicken chuck labore beef. Enim proident meatball burgdoggen doner ex. + +Bacon short ribs sausage, exercitation do meatball chicken short loin anim buffalo voluptate tail cillum shank. Ipsum tempor qui consectetur. Non ut flank exercitation, commodo kevin aute kielbasa beef ribs fugiat laboris et fatback aliquip. Jerky spare ribs capicola, aute esse doner boudin ham hock chuck corned beef officia irure ipsum pancetta. Sed swine aliqua, esse turducken meatloaf culpa proident t-bone excepteur ut. Swine velit pancetta ut dolore pork chop. In reprehenderit nostrud pork short ribs sunt. + +Dolor biltong burgdoggen irure mollit ut pancetta laboris nisi aliqua minim nostrud shoulder. Commodo turducken salami frankfurter ut biltong est occaecat tenderloin ea andouille aliqua consequat ut. Labore deserunt buffalo fugiat leberkas pastrami non, reprehenderit nulla. Picanha exercitation aliqua duis dolor incididunt short ribs hamburger tongue ribeye adipisicing deserunt cupidatat ball tip. Chislic duis deserunt mollit ham hock short loin kevin leberkas buffalo ut fugiat pork. Buffalo commodo irure, ex tri-tip turducken short loin. + +Bacon doner in salami tongue in sed duis pork dolore pork chop id dolor culpa. Pork loin irure tenderloin, quis pork minim consequat rump. Pastrami aliquip bacon, consequat sunt et pork chop beef ribs chislic duis pork loin beef cow turkey. Minim tail biltong deserunt esse picanha tenderloin laboris aute alcatra pig consequat jerky. Pig shank drumstick spare ribs, chicken pork pancetta cupim et t-bone tempor. + +Dolore meatball ea beef prosciutto capicola, bacon culpa burgdoggen deserunt aliquip strip steak. Chuck et fugiat, boudin sint meatloaf corned beef labore brisket nulla quis ribeye fatback. Consectetur porchetta spare ribs, incididunt ball tip cupim irure dolore kevin in. Ham nulla et, ea brisket swine veniam occaecat drumstick incididunt shankle sed pork loin. Burgdoggen tri-tip ham drumstick, ad exercitation in bresaola in officia andouille sausage frankfurter. Enim capicola cupim, leberkas beef ribs culpa magna id. Pork ham hock biltong dolor in. + +Ullamco hamburger lorem, sirloin anim jowl beef in pork ham. Occaecat kevin tenderloin, corned beef landjaeger ut biltong. Swine beef ribs in ground round ribeye, exercitation leberkas. Irure pancetta ribeye, venison strip steak ut non. + +Leberkas in anim commodo flank, deserunt chicken salami id minim fatback culpa. Adipisicing short ribs boudin, ex fugiat deserunt aliquip sirloin ut excepteur. Minim doner sirloin aliquip, shankle buffalo chicken ipsum turducken nulla enim corned beef ex. Tenderloin landjaeger chuck spare ribs cow ad. + +Boudin frankfurter eiusmod sausage tri-tip short ribs. Magna spare ribs consequat, fugiat officia enim short ribs sausage. Et tongue spare ribs fugiat quis, kevin magna leberkas. Culpa alcatra hamburger aliquip, sint sirloin ut excepteur magna do elit ullamco pig. Aliquip et ipsum esse sirloin quis doner. In pork loin pancetta frankfurter consectetur, ball tip sed commodo. + +In laborum prosciutto beef ribs consequat porchetta culpa in tail. Enim porchetta dolor tenderloin bacon. Swine t-bone officia, aliqua velit tempor dolor burgdoggen shank. Aute ham in bresaola, chicken duis shoulder in et pork chop consequat aliquip. Boudin eu esse enim cow beef ribs labore tenderloin. + +Adipisicing andouille in short loin salami anim. In shankle capicola, meatloaf alcatra biltong minim strip steak eiusmod qui. Cupim cupidatat fugiat commodo, qui andouille tenderloin deserunt officia turducken minim ut sed swine shoulder. Rump sausage incididunt boudin. Id sirloin drumstick sed in. + +Veniam turducken ham ground round in officia, ad pariatur hamburger buffalo cupidatat ullamco reprehenderit dolore biltong. Landjaeger ullamco turkey jowl meatball culpa minim buffalo ham hock corned beef do sausage cow. Alcatra swine qui pariatur velit nostrud tri-tip filet mignon est. Enim boudin ut adipisicing, corned beef exercitation tempor cillum swine do ex tenderloin anim turkey officia. Excepteur sed chuck ut anim drumstick boudin. + +In sirloin labore, culpa ex dolore esse fatback buffalo. Flank tongue ut jerky in ground round labore adipisicing. Aute nisi cillum, bacon esse tri-tip reprehenderit quis tempor shank ham hock. Magna spare ribs quis enim chicken brisket, consequat do strip steak ullamco cupim tail. Laboris beef porchetta hamburger. + +Bacon meatloaf pariatur deserunt ground round magna anim. Cupidatat tri-tip incididunt culpa turkey kevin. Rump occaecat qui filet mignon capicola sed ham dolor ipsum swine. Pancetta consectetur pork chop kevin. + +Incididunt shoulder frankfurter, fatback burgdoggen chicken aliqua. Veniam deserunt nulla in, tongue in aliquip beef ribs velit occaecat. Ut occaecat ground round, brisket spare ribs eu adipisicing dolore biltong cillum tempor. Venison consequat pork belly rump salami shankle ball tip sed pastrami incididunt pork chop ham. + +Anim excepteur filet mignon jowl. Ipsum cillum t-bone mollit meatball andouille. Elit ribeye dolor short ribs fatback kevin. Magna proident short loin laboris anim alcatra cillum culpa enim ut exercitation ex hamburger cupim filet mignon. Sausage veniam dolor, jowl pig nulla spare ribs ut lorem alcatra. + +Sint pastrami ut, sausage andouille kevin spare ribs turducken velit meatball proident landjaeger chicken. Ut ground round tail velit, pig nulla filet mignon salami veniam tempor landjaeger minim. Short ribs prosciutto labore, exercitation flank frankfurter shankle beef ribs rump ham hock cupim. Minim consectetur aliquip tri-tip bacon porchetta spare ribs, cillum jerky prosciutto officia laboris laborum. Ex sed pancetta, salami labore tongue pariatur aliquip nostrud burgdoggen laboris duis beef commodo. Sint short loin voluptate est proident ribeye in. Boudin strip steak velit fugiat ut lorem frankfurter pork loin. + +Turkey pork lorem proident, fatback in culpa picanha capicola non ut doner. Culpa irure boudin labore pariatur venison chuck leberkas incididunt strip steak ham flank fatback meatloaf. Aliqua flank irure rump pork belly qui sunt aute reprehenderit tempor. Non cillum kevin fugiat, cupidatat id chicken strip steak. Tri-tip non ham hock minim, pork loin brisket tail consequat. Ut culpa pastrami shankle, irure in short loin. + +Exercitation adipisicing fugiat, ex picanha tenderloin pastrami. Do hamburger drumstick, kevin eiusmod cupim sunt jerky occaecat bacon qui dolore. Dolor pork loin chuck ad short ribs. Elit aliqua nostrud id sausage. diff --git a/tests/Benchmark/fixtures/cyrillic.txt b/tests/Benchmark/fixtures/cyrillic.txt new file mode 100644 index 0000000..146c9ec --- /dev/null +++ b/tests/Benchmark/fixtures/cyrillic.txt @@ -0,0 +1,19 @@ +Проснувшись однажды утром после беспокойного сна, Грегор Замза обнаружил, что он у себя в постели превратился в страшное насекомое. Лежа на панцирнотвердой спине, он видел, стоило ему приподнять голову, свой коричневый, выпуклый, разделенный дугообразными чешуйками живот, на верхушке которого еле держалось готовое вот-вот окончательно сползти одеяло. Его многочисленные, убого тонкие по сравнению с остальным телом ножки беспомощно копошились у него перед глазами. «Что со мной случилось? » – подумал он. Это не было сном. Его комната, настоящая, разве что слишком маленькая, но обычная комната, мирно покоилась в своих четырех хорошо знакомых стенах. + +Над столом, где были разложены распакованные образцы сукон – Замза был коммивояжером, – висел портрет, который он недавно вырезал из иллюстрированного журнала и вставил в красивую золоченую рамку. На портрете была изображена дама в меховой шляпе и боа, она сидела очень прямо и протягивала зрителю тяжелую меховую муфту, в которой целиком исчезала ее рука. Затем взгляд Грегора устремился в окно, и пасмурная погода – слышно было, как по жести подоконника стучат капли дождя – привела его и вовсе в грустное настроение. + +«Хорошо бы еще немного поспать и забыть всю эту чепуху», – подумал он, но это было совершенно неосуществимо, он привык спать на правом боку, а в теперешнем своем состоянии он никак не мог принять этого положения. С какой бы силой ни поворачивался он на правый бок, он неизменно сваливался опять на спину. Закрыв глаза, чтобы не видеть своих барахтающихся ног, он проделал это добрую сотню раз и отказался от этих попыток только тогда, когда почувствовал какую-то неведомую дотоле, тупую и слабую боль в боку. «Ах ты, господи, – подумал он, – какую я выбрал хлопотную профессию! Изо дня в день в разъездах. + +Деловых волнений куда больше, чем на месте, в торговом доме, а кроме того, изволь терпеть тяготы дороги, думай о расписании поездов, мирись с плохим, нерегулярным питанием, завязывай со все новыми и новыми людьми недолгие, никогда не бывающие сердечными отношения. Черт бы побрал все это! » Он почувствовал вверху живота легкий зуд; медленно подвинулся на спине к прутьям кровати, чтобы удобнее было поднять голову; нашел зудевшее место, сплошь покрытое, как оказалось, белыми непонятными точечками; хотел было ощупать это место одной из ножек, но сразу отдернул ее, ибо даже простое прикосновение вызвало у него, Грегора, озноб. Он соскользнул в прежнее свое положение. + +«От этого раннего вставания, – подумал он, – можно совсем обезуметь. Человек должен высыпаться. Другие коммивояжеры живут, как одалиски. Когда я, например, среди дня возвращаюсь в гостиницу, чтобы переписать полученные заказы, эти господа только завтракают. А осмелься я вести себя так, мои хозяин выгнал бы меня сразу. Кто знает, впрочем, может быть, это было бы даже очень хорошо для меня. Если бы я не сдерживался ради родителей, я бы давно заявил об уходе, я бы подошел к своему хозяину и выложил ему все, что о нем думаю. Он бы так и свалился с конторки! + +Странная у него манера – садиться на конторку и с ее высоты разговаривать со служащим, который вдобавок вынужден подойти вплотную к конторке из-за того, что хозяин туг на ухо. Однако надежда еще не совсем потеряна: как только я накоплю денег, чтобы выплатить долг моих родителей – на это уйдет еще лет пять-шесть, – я так и поступлю. Тут-то мы и распрощаемся раз и навсегда. А пока что надо подниматься, мой поезд отходит в пять». И он взглянул на будильник, который тикал на сундуке. «Боже правый! » – подумал он. Было половина седьмого, и стрелки спокойно двигались дальше, было даже больше половины, без малого уже три четверти. Неужели будильник не звонил? + +С кровати было видно, что он поставлен правильно, на четыре часа; и он, несомненно, звонил. Но как можно было спокойно спать под этот сотрясающий мебель трезвон? Ну, спал-то он неспокойно, но, видимо, крепко. Однако что делать теперь? Следующий поезд уходит в семь часов; чтобы поспеть на него, он должен отчаянно торопиться, а набор образцов еще не упакован, да и сам он отнюдь не чувствует себя свежим и легким на подъем. И даже поспей он на поезд, хозяйского разноса ему все равно не избежать – ведь рассыльный торгового дома дежурил у пятичасового поезда и давно доложил о его, Грегора, опоздании. Рассыльный, человек бесхарактерный и неумный, был ставленником хозяина. А что, если сказаться больным? + +Но это было бы крайне неприятно и показалось бы подозрительным, ибо за пятилетнюю свою службу Грегор ни разу еще не болел. Хозяин, конечно, привел бы врача больничной кассы и стал попрекать родителей сыном-лентяем, отводя любые возражения ссылкой на этого врача, по мнению которого все люди на свете совершенно здоровы и только не любят работать. И разве в данном случае он был бы так уж неправ? Если не считать сонливости, действительно странной после такого долгого сна, Грегор и в самом деле чувствовал себя превосходно и был даже чертовски голоден. Проснувшись однажды утром после беспокойного сна, Грегор Замза обнаружил, что он у себя в постели превратился в страшное насекомое. + +Лежа на панцирнотвердой спине, он видел, стоило ему приподнять голову, свой коричневый, выпуклый, разделенный дугообразными чешуйками живот, на верхушке которого еле держалось готовое вот-вот окончательно сползти одеяло. Его многочисленные, убого тонкие по сравнению с остальным телом ножки беспомощно копошились у него перед глазами. «Что со мной случилось? » – подумал он. Это не было сном. Его комната, настоящая, разве что слишком маленькая, но обычная комната, мирно покоилась в своих четырех хорошо знакомых стенах. Над столом, где были разложены распакованные образцы сукон – Замза был коммивояжером, – висел портрет, который он недавно вырезал из иллюстрированного журнала и вставил в красивую золоченую рамку. + +На портрете была изображена дама в меховой шляпе и боа, она сидела очень прямо и протягивала зрителю тяжелую меховую муфту, в которой целиком исчезала ее рука. Затем взгляд Грегора устремился в окно, и пасмурная погода – слышно было, как по жести подоконника стучат капли дождя – привела его и вовсе в грустное настроение. «Хорошо бы еще немного поспать и забыть всю эту чепуху», – подумал он, но это было совершенно неосуществимо, он привык спать на правом боку, а в теперешнем своем состоянии он никак не мог принять этого положения. С какой бы силой ни поворачивался он на правый бок, он неизменно сваливался опять на спину. Закрыв глаза, чтобы не видеть своих барахтающихся ног, он проделал это добрую сотню раз и отказался от этих попыток только тогда, когда почувствовал какую-то неведомую дотоле, тупую и слабую боль в боку. «Ах ты, господи, – подумал он, – какую я выбрал хлопотную профессию! Изо дня в день в разъездах. Деловых волнений куда больше, чем на месте, в торговом доме, а кроме того, изволь терпеть тяготы дороги, думай о расписании поездов, мирись с плохим, нерегулярным питанием, завязывай со все новыми и новыми людьми недолгие, никогда не бывающие сердечными отношения. Черт бы побрал все это! » Он почувствовал вверху живота легкий зуд; diff --git a/tests/Benchmark/fixtures/latin.txt b/tests/Benchmark/fixtures/latin.txt new file mode 100644 index 0000000..351ae91 --- /dev/null +++ b/tests/Benchmark/fixtures/latin.txt @@ -0,0 +1,19 @@ +One morning, when Gregor Samsa woke from troubled dreams, he found himself transformed in his bed into a horrible vermin. He lay on his armour-like back, and if he lifted his head a little he could see his brown belly, slightly domed and divided by arches into stiff sections. The bedding was hardly able to cover it and seemed ready to slide off any moment. His many legs, pitifully thin compared with the size of the rest of him, waved about helplessly as he looked. "What's happened to me? " he thought. It wasn't a dream. + +His room, a proper human room although a little too small, lay peacefully between its four familiar walls. A collection of textile samples lay spread out on the table - Samsa was a travelling salesman - and above it there hung a picture that he had recently cut out of an illustrated magazine and housed in a nice, gilded frame. It showed a lady fitted out with a fur hat and fur boa who sat upright, raising a heavy fur muff that covered the whole of her lower arm towards the viewer. Gregor then turned to look out the window at the dull weather. + +Drops of rain could be heard hitting the pane, which made him feel quite sad. "How about if I sleep a little bit longer and forget all this nonsense", he thought, but that was something he was unable to do because he was used to sleeping on his right, and in his present state couldn't get into that position. However hard he threw himself onto his right, he always rolled back to where he was. + +He must have tried it a hundred times, shut his eyes so that he wouldn't have to look at the floundering legs, and only stopped when he began to feel a mild, dull pain there that he had never felt before. "Oh, God", he thought, "what a strenuous career it is that I've chosen! Travelling day in and day out. + +Doing business like this takes much more effort than doing your own business at home, and on top of that there's the curse of travelling, worries about making train connections, bad and irregular food, contact with different people all the time so that you can never get to know anyone or become friendly with them. It can all go to Hell! + +" He felt a slight itch up on his belly; pushed himself slowly up on his back towards the headboard so that he could lift his head better; found where the itch was, and saw that it was covered with lots of little white spots which he didn't know what to make of; and when he tried to feel the place with one of his legs he drew it quickly back because as soon as he touched it he was overcome by a cold shudder. He slid back into his former position. "Getting up early all the time", he thought, "it makes you stupid. You've got to get enough sleep. Other travelling salesmen live a life of luxury. + +For instance, whenever I go back to the guest house during the morning to copy out the contract, these gentlemen are always still sitting there eating their breakfasts. I ought to just try that with my boss; I'd get kicked out on the spot. But who knows, maybe that would be the best thing for me. If I didn't have my parents to think about I'd have given in my notice a long time ago, I'd have gone up to the boss and told him just what I think, tell him everything I would, let him know just what I feel. He'd fall right off his desk! + +And it's a funny sort of business to be sitting up there at your desk, talking down at your subordinates from up there, especially when you have to go right up close because the boss is hard of hearing. Well, there's still some hope; once I've got the money together to pay off my parents' debt to him - another five or six years I suppose - that's definitely what I'll do. That's when I'll make the big change. First of all though, I've got to get up, my train leaves at five. " And he looked over at the alarm clock, ticking on the chest of drawers. "God in Heaven! " he thought. + +It was half past six and the hands were quietly moving forwards, it was even later than half past, more like quarter to seven. Had the alarm clock not rung? He could see from the bed that it had been set for four o'clock as it should have been; it certainly must have rung. Yes, but was it possible to quietly sleep through that furniture-rattling noise? True, he had not slept peacefully, but probably all the more deeply because of that. What should he do now? The next train went at seven; if he were to catch that he would have to rush like mad and the collection of samples was still not packed, and he did not at all feel particularly fresh and lively. + +And even if he did catch the train he would not avoid his boss's anger as the office assistant would have been there to see the five o'clock train go, he would have put in his report about Gregor's not being there a long time ago. The office assistant was the boss's man, spineless, and with no understanding. What about if he reported sick? But that would be extremely strained and suspicious as in fifteen years of service Gregor had never once yet been ill. His boss would certainly come round with the doctor from the medical insurance company, accuse his parents of having a lazy son, and accept the doctor's recommendation not to make any claim as the doctor believed that no-one was ever ill but that many were workshy. And what's more, would he have been entirely wrong in this case? Gregor did in fact, apart from excessive sleepiness after sleeping for so long, feel completely well and even felt much hungrier than usual. One morning, when Gregor Samsa woke from troubled dreams, he found himself transformed in his bed into a horrible vermin. He lay on his armour-like back, and if he lifted his head a little he could see his brown belly, slightly domed and divided by arches into stiff sections. The bedding was hardly able to cover it and seemed ready to slide off any moment. His many legs, pitifully thin compared with the size of the rest of