Created
May 19, 2017 13:32
-
-
Save olbat/cbef9a4a8c1eae99ef2881e3cad28bdf to your computer and use it in GitHub Desktop.
Small BreakIterator benchmark for icu.cr
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require "benchmark" | |
require "./src/icu" | |
REPEAT=1_000 | |
# from https://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt | |
samples = [] of String | |
samples << <<-EOS | |
Σὲ γνωρίζω ἀπὸ τὴν κόψη | |
τοῦ σπαθιοῦ τὴν τρομερή, | |
σὲ γνωρίζω ἀπὸ τὴν ὄψη | |
ποὺ μὲ βία μετράει τὴ γῆ. | |
᾿Απ᾿ τὰ κόκκαλα βγαλμένη | |
τῶν ῾Ελλήνων τὰ ἱερά | |
καὶ σὰν πρῶτα ἀνδρειωμένη | |
χαῖρε, ὦ χαῖρε, ᾿Ελευθεριά! | |
EOS | |
samples << <<-EOS | |
Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν, ὦ ἄνδρες ᾿Αθηναῖοι, | |
ὅταν τ᾿ εἰς τὰ πράγματα ἀποβλέψω καὶ ὅταν πρὸς τοὺς | |
λόγους οὓς ἀκούω· τοὺς μὲν γὰρ λόγους περὶ τοῦ | |
τιμωρήσασθαι Φίλιππον ὁρῶ γιγνομένους, τὰ δὲ πράγματ᾿ | |
εἰς τοῦτο προήκοντα, ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αὐτοὶ | |
πρότερον κακῶς σκέψασθαι δέον. οὐδέν οὖν ἄλλο μοι δοκοῦσιν | |
οἱ τὰ τοιαῦτα λέγοντες ἢ τὴν ὑπόθεσιν, περὶ ἧς βουλεύεσθαι, | |
οὐχὶ τὴν οὖσαν παριστάντες ὑμῖν ἁμαρτάνειν. ἐγὼ δέ, ὅτι μέν | |
ποτ᾿ ἐξῆν τῇ πόλει καὶ τὰ αὑτῆς ἔχειν ἀσφαλῶς καὶ Φίλιππον | |
τιμωρήσασθαι, καὶ μάλ᾿ ἀκριβῶς οἶδα· ἐπ᾿ ἐμοῦ γάρ, οὐ πάλαι | |
γέγονεν ταῦτ᾿ ἀμφότερα· νῦν μέντοι πέπεισμαι τοῦθ᾿ ἱκανὸν | |
προλαβεῖν ἡμῖν εἶναι τὴν πρώτην, ὅπως τοὺς συμμάχους | |
σώσομεν. ἐὰν γὰρ τοῦτο βεβαίως ὑπάρξῃ, τότε καὶ περὶ τοῦ | |
τίνα τιμωρήσεταί τις καὶ ὃν τρόπον ἐξέσται σκοπεῖν· πρὶν δὲ | |
τὴν ἀρχὴν ὀρθῶς ὑποθέσθαι, μάταιον ἡγοῦμαι περὶ τῆς | |
τελευτῆς ὁντινοῦν ποιεῖσθαι λόγον. | |
Δημοσθένους, Γ´ ᾿Ολυνθιακὸς | |
EOS | |
samples << <<-EOS | |
გთხოვთ ახლავე გაიაროთ რეგისტრაცია Unicode-ის მეათე საერთაშორისო | |
კონფერენციაზე დასასწრებად, რომელიც გაიმართება 10-12 მარტს, | |
ქ. მაინცში, გერმანიაში. კონფერენცია შეჰკრებს ერთად მსოფლიოს | |
ექსპერტებს ისეთ დარგებში როგორიცაა ინტერნეტი და Unicode-ი, | |
ინტერნაციონალიზაცია და ლოკალიზაცია, Unicode-ის გამოყენება | |
ოპერაციულ სისტემებსა, და გამოყენებით პროგრამებში, შრიფტებში, | |
ტექსტების დამუშავებასა და მრავალენოვან კომპიუტერულ სისტემებში. | |
EOS | |
samples << <<-EOS | |
Зарегистрируйтесь сейчас на Десятую Международную Конференцию по | |
Unicode, которая состоится 10-12 марта 1997 года в Майнце в Германии. | |
Конференция соберет широкий круг экспертов по вопросам глобального | |
Интернета и Unicode, локализации и интернационализации, воплощению и | |
применению Unicode в различных операционных системах и программных | |
приложениях, шрифтах, верстке и многоязычных компьютерных системах. | |
EOS | |
samples << <<-EOS | |
ሰማይ አይታረስ ንጉሥ አይከሰስ። | |
ብላ ካለኝ እንደአባቴ በቆመጠኝ። | |
ጌጥ ያለቤቱ ቁምጥና ነው። | |
ደሀ በሕልሙ ቅቤ ባይጠጣ ንጣት በገደለው። | |
የአፍ ወለምታ በቅቤ አይታሽም። | |
አይጥ በበላ ዳዋ ተመታ። | |
ሲተረጉሙ ይደረግሙ። | |
ቀስ በቀስ፥ ዕንቁላል በእግሩ ይሄዳል። | |
ድር ቢያብር አንበሳ ያስር። | |
ሰው እንደቤቱ እንጅ እንደ ጉረቤቱ አይተዳደርም። | |
እግዜር የከፈተውን ጉሮሮ ሳይዘጋው አይድርም። | |
የጎረቤት ሌባ፥ ቢያዩት ይስቅ ባያዩት ያጠልቅ። | |
ሥራ ከመፍታት ልጄን ላፋታት። | |
ዓባይ ማደሪያ የለው፥ ግንድ ይዞ ይዞራል። | |
የእስላም አገሩ መካ የአሞራ አገሩ ዋርካ። | |
ተንጋሎ ቢተፉ ተመልሶ ባፉ። | |
ወዳጅህ ማር ቢሆን ጨርስህ አትላሰው። | |
እግርህን በፍራሽህ ልክ ዘርጋ። | |
EOS | |
samples << <<-EOS | |
⡌⠁⠧⠑ ⠼⠁⠒ ⡍⠜⠇⠑⠹⠰⠎ ⡣⠕⠌ | |
⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠙⠑⠁⠙⠒ ⠞⠕ ⠃⠑⠛⠔ ⠺⠊⠹⠲ ⡹⠻⠑ ⠊⠎ ⠝⠕ ⠙⠳⠃⠞ | |
⠱⠁⠞⠑⠧⠻ ⠁⠃⠳⠞ ⠹⠁⠞⠲ ⡹⠑ ⠗⠑⠛⠊⠌⠻ ⠕⠋ ⠙⠊⠎ ⠃⠥⠗⠊⠁⠇ ⠺⠁⠎ | |
⠎⠊⠛⠝⠫ ⠃⠹ ⠹⠑ ⠊⠇⠻⠛⠹⠍⠁⠝⠂ ⠹⠑ ⠊⠇⠻⠅⠂ ⠹⠑ ⠥⠝⠙⠻⠞⠁⠅⠻⠂ | |
⠁⠝⠙ ⠹⠑ ⠡⠊⠑⠋ ⠍⠳⠗⠝⠻⠲ ⡎⠊⠗⠕⠕⠛⠑ ⠎⠊⠛⠝⠫ ⠊⠞⠲ ⡁⠝⠙ | |
⡎⠊⠗⠕⠕⠛⠑⠰⠎ ⠝⠁⠍⠑ ⠺⠁⠎ ⠛⠕⠕⠙ ⠥⠏⠕⠝ ⠰⡡⠁⠝⠛⠑⠂ ⠋⠕⠗ ⠁⠝⠹⠹⠔⠛ ⠙⠑ | |
⠡⠕⠎⠑ ⠞⠕ ⠏⠥⠞ ⠙⠊⠎ ⠙⠁⠝⠙ ⠞⠕⠲ | |
⡕⠇⠙ ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ | |
⡍⠔⠙⠖ ⡊ ⠙⠕⠝⠰⠞ ⠍⠑⠁⠝ ⠞⠕ ⠎⠁⠹ ⠹⠁⠞ ⡊ ⠅⠝⠪⠂ ⠕⠋ ⠍⠹ | |
⠪⠝ ⠅⠝⠪⠇⠫⠛⠑⠂ ⠱⠁⠞ ⠹⠻⠑ ⠊⠎ ⠏⠜⠞⠊⠊⠥⠇⠜⠇⠹ ⠙⠑⠁⠙ ⠁⠃⠳⠞ | |
⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ ⡊ ⠍⠊⠣⠞ ⠙⠁⠧⠑ ⠃⠑⠲ ⠔⠊⠇⠔⠫⠂ ⠍⠹⠎⠑⠇⠋⠂ ⠞⠕ | |
⠗⠑⠛⠜⠙ ⠁ ⠊⠕⠋⠋⠔⠤⠝⠁⠊⠇ ⠁⠎ ⠹⠑ ⠙⠑⠁⠙⠑⠌ ⠏⠊⠑⠊⠑ ⠕⠋ ⠊⠗⠕⠝⠍⠕⠝⠛⠻⠹ | |
⠔ ⠹⠑ ⠞⠗⠁⠙⠑⠲ ⡃⠥⠞ ⠹⠑ ⠺⠊⠎⠙⠕⠍ ⠕⠋ ⠳⠗ ⠁⠝⠊⠑⠌⠕⠗⠎ | |
⠊⠎ ⠔ ⠹⠑ ⠎⠊⠍⠊⠇⠑⠆ ⠁⠝⠙ ⠍⠹ ⠥⠝⠙⠁⠇⠇⠪⠫ ⠙⠁⠝⠙⠎ | |
⠩⠁⠇⠇ ⠝⠕⠞ ⠙⠊⠌⠥⠗⠃ ⠊⠞⠂ ⠕⠗ ⠹⠑ ⡊⠳⠝⠞⠗⠹⠰⠎ ⠙⠕⠝⠑ ⠋⠕⠗⠲ ⡹⠳ | |
⠺⠊⠇⠇ ⠹⠻⠑⠋⠕⠗⠑ ⠏⠻⠍⠊⠞ ⠍⠑ ⠞⠕ ⠗⠑⠏⠑⠁⠞⠂ ⠑⠍⠏⠙⠁⠞⠊⠊⠁⠇⠇⠹⠂ ⠹⠁⠞ | |
⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ | |
EOS | |
Benchmark.bm do |x| | |
samples.each_with_index do |sample, i| | |
x.report("##{i} char") do | |
REPEAT.times { ICU::BreakIterator.new(sample, ICU::BreakIterator::Type::Character) } | |
end | |
x.report("##{i} word") do | |
REPEAT.times { ICU::BreakIterator.new(sample, ICU::BreakIterator::Type::Word) } | |
end | |
x.report("##{i} sentence") do | |
REPEAT.times { ICU::BreakIterator.new(sample, ICU::BreakIterator::Type::Sentence) } | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment