"""Head-to-head benchmark: translit vs Unidecode / text-unidecode / anyascii.

Benchmarks transliteration throughput across all major script families using
natural-language Wikipedia text (~2–4 KB each, no synthetic repetition).

Run after installing comparison libraries:
    pip install Unidecode text-unidecode anyascii
"""

import sys
import time


def bench_library(name: str, func, text: str, iterations: int = 5_000) -> float:
    """Benchmark a transliteration function, return chars/sec."""
    # Warmup
    for _ in range(100):
        func(text)
    start = time.perf_counter()
    for _ in range(iterations):
        func(text)
    elapsed = time.perf_counter() - start
    chars_per_sec = len(text) * iterations / elapsed
    return chars_per_sec


# ---------------------------------------------------------------------------
# Natural-language benchmark texts sourced from Wikipedia articles.
# Each text is a real paragraph (~2–4 KB) exercising script-specific features.
# Grouped by script family for structured reporting.
# ---------------------------------------------------------------------------

BENCH_TEXTS: dict[str, tuple[str, str, str]] = {
    # (label, script_group, text)
    # ── Latin ────────────────────────────────────────────────────────────
    "French": (
        "Latin",
        (
            "La France, en forme longue la République française, est un État souverain "
            "transcontinental dont le territoire métropolitain s'étend en Europe de l'Ouest "
            "et dont le territoire ultramarin s'étend dans les océans Indien, Atlantique et "
            "Pacifique ainsi qu'en Amérique du Sud. La métropole s'étend des côtes de la mer "
            "du Nord et de la Manche au nord-ouest, à la mer Méditerranée au sud-est. Elle "
            "est bordée par la Belgique et le Luxembourg au nord-est, par l'Allemagne et la "
            "Suisse à l'est, par l'Italie et Monaco au sud-est, par l'Espagne et l'Andorre "
            "au sud-ouest. Les territoires ultramarins comprennent la Guyane française en "
            "Amérique du Sud, les îles de la Guadeloupe, de la Martinique, de Saint-Martin, "
            "de Saint-Barthélemy, de Saint-Pierre-et-Miquelon dans l'Atlantique, les îles de "
            "la Réunion, de Mayotte et les Terres australes et antarctiques françaises dans "
            "l'océan Indien, ainsi que la Nouvelle-Calédonie, la Polynésie française, Wallis-"
            "et-Futuna et Clipperton dans l'océan Pacifique. La France possède également des "
            "frontières terrestres avec le Brésil et le Suriname en Guyane française."
        ),
    ),
    "German": (
        "Latin",
        (
            "Die Bundesrepublik Deutschland ist ein Bundesstaat in Mitteleuropa. Er hat 16 "
            "Bundesländer und ist als freiheitlich-demokratischer und sozialer Rechtsstaat "
            "verfasst. Die 1949 gegründete Bundesrepublik Deutschland stellt die jüngste "
            "Ausprägung des 1871 erstmals begründeten deutschen Nationalstaates dar. "
            "Bundeshauptstadt und Regierungssitz ist Berlin. Deutschland grenzt an neun "
            "Staaten, es hat Anteil an der Nord- und Ostsee im Norden sowie dem Bodensee "
            "und den Alpen im Süden. Es liegt in der gemäßigten Klimazone und verfügt über "
            "sechzehn National- und über hundert Naturparks. Das heutige Deutschland hat "
            "etwa 84 Millionen Einwohner und zählt bei einer Fläche von 357.588 "
            "Quadratkilometern mit durchschnittlich 232 Einwohnern pro Quadratkilometer zu "
            "den dicht besiedelten Flächenstaaten. Die bevölkerungsreichste deutsche Stadt "
            "ist Berlin; weitere Großstädte mit mehr als einer halben Million Einwohnern "
            "sind Hamburg, München, Köln, Frankfurt am Main, Stuttgart und Düsseldorf."
        ),
    ),
    "Vietnamese": (
        "Latin",
        (
            "Việt Nam, tên gọi chính thức là Cộng hòa xã hội chủ nghĩa Việt Nam, là một "
            "quốc gia nằm ở cực Đông của bán đảo Đông Dương thuộc khu vực Đông Nam Á, giáp "
            "với Lào và Campuchia về phía tây, giáp Trung Quốc về phía bắc, giáp Biển Đông "
            "về phía đông và đông nam. Với dân số ước tính khoảng 100 triệu người vào năm "
            "2023, Việt Nam là quốc gia đông dân thứ mười lăm trên thế giới và đông dân "
            "thứ ba trong khu vực Đông Nam Á. Thủ đô của Việt Nam là Hà Nội và thành phố "
            "đông dân nhất là Thành phố Hồ Chí Minh. Việt Nam có đường bờ biển dài 3.260 "
            "kilômét và có biên giới trên đất liền dài 4.639 kilômét. Địa hình Việt Nam rất "
            "đa dạng với đồi núi, đồng bằng, bờ biển và thềm lục địa, phản ánh lịch sử "
            "địa chất lâu dài trong điều kiện gió mùa nhiệt đới nóng ẩm."
        ),
    ),
    "Turkish": (
        "Latin",
        (
            "Türkiye Cumhuriyeti ya da kısaca Türkiye, Güneybatı Asya'daki Anadolu ile "
            "Güneydoğu Avrupa'daki Balkanlar'ın doğu ucunda yer alan ülkedir. Kuzeybatısında "
            "Bulgaristan, batısında Yunanistan, kuzeydoğusunda Gürcistan, doğusunda Ermenistan, "
            "İran ve Azerbaycan'ın Nahçıvan Özerk Cumhuriyeti, güneyinde ise Irak ve Suriye "
            "bulunur. Güneyini Akdeniz, batısını Ege Denizi, kuzeyini ise Karadeniz çevreler. "
            "Marmara Denizi ile İstanbul ve Çanakkale boğazları, Anadolu'yu Trakya'dan ayırır. "
            "Türkiye'nin başkenti Ankara'dır. Ülkenin en büyük şehri ve ekonomik merkezi "
            "ise İstanbul olup nüfusu on beş milyonun üzerindedir."
        ),
    ),
    # ── Cyrillic ─────────────────────────────────────────────────────────
    "Russian": (
        "Cyrillic",
        (
            "Россия, или Российская Федерация, — государство в Восточной Европе и Северной "
            "Азии. Территория России в рамках международно признанных границ составляет "
            "17 098 242 квадратных километра, что делает её самой большой страной в мире. "
            "Население составляет 146,4 миллиона человек, что ставит её на девятое место "
            "в мире по численности населения. Столица и крупнейший город — Москва. Россия "
            "граничит с восемнадцатью государствами, что является наибольшим числом "
            "сопредельных стран в мире. Российская Федерация является постоянным членом "
            "Совета Безопасности Организации Объединённых Наций с правом вето, одной из "
            "ведущих великих держав и одним из пяти признанных ядерных государств мира. "
            "Россия является одним из мировых лидеров в области космических исследований."
        ),
    ),
    "Ukrainian": (
        "Cyrillic",
        (
            "Україна — держава у Східній та частково Центральній Європі. Площа становить "
            "603 628 квадратних кілометрів, що робить її другою за величиною країною в Європі "
            "після Росії. Населення становить близько 37 мільйонів осіб. Столиця та "
            "найбільше місто — Київ. Державна мова — українська. Україна межує з Білоруссю "
            "на півночі, Польщею, Словаччиною та Угорщиною на заході, Румунією та Молдовою "
            "на південному заході, омивається Чорним та Азовським морями на півдні та "
            "південному сході. Українська культура протягом століть формувалася під впливом "
            "географічного положення на перехресті між Європою та Азією. Країна має багату "
            "історію, що сягає Київської Русі, однієї з найбільших і наймогутніших держав "
            "середньовічної Європи."
        ),
    ),
    # ── Greek ────────────────────────────────────────────────────────────
    "Greek": (
        "Greek",
        (
            "Η Ελλάδα, επίσημα γνωστή ως Ελληνική Δημοκρατία, είναι χώρα της νοτιοανατολικής "
            "Ευρώπης. Βρίσκεται στο νότιο άκρο της Βαλκανικής χερσονήσου και συνορεύει στα "
            "βόρεια με την Αλβανία, τη Βόρεια Μακεδονία, τη Βουλγαρία και την Τουρκία. Η "
            "Ελλάδα αποτελείται από εννέα παραδοσιακές γεωγραφικές περιφέρειες και "
            "περιλαμβάνει περίπου δύο χιλιάδες νησιά στο Αιγαίο και το Ιόνιο πέλαγος, από τα "
            "οποία μόνο 227 είναι κατοικημένα. Η χώρα έχει πληθυσμό περίπου 10,4 εκατομμυρίων "
            "κατοίκων. Η Αθήνα είναι η πρωτεύουσα και μεγαλύτερη πόλη της χώρας, ακολουθούμενη "
            "από τη Θεσσαλονίκη. Η Ελλάδα θεωρείται κοιτίδα του δυτικού πολιτισμού, τόπος "
            "γέννησης της δημοκρατίας, της δυτικής φιλοσοφίας, των Ολυμπιακών Αγώνων και "
            "της δυτικής λογοτεχνίας."
        ),
    ),
    # ── Arabic ───────────────────────────────────────────────────────────
    "Arabic": (
        "Arabic",
        (
            "المملكة العربية السعودية هي دولة عربية تقع في شبه الجزيرة العربية في جنوب غرب "
            "آسيا. تبلغ مساحتها حوالي مليوني كيلومتر مربع وهي أكبر دولة في الشرق الأوسط "
            "وخامس أكبر دولة في آسيا. يحد المملكة من الشمال العراق والأردن ومن الشمال "
            "الشرقي الكويت ومن الشرق الإمارات العربية المتحدة وقطر والبحرين ومن الجنوب "
            "اليمن وسلطنة عمان ومن الغرب البحر الأحمر. الرياض هي عاصمة المملكة وأكبر "
            "مدنها. تتميز المملكة بتنوع تضاريسها نتيجة مساحتها الكبيرة التي شكلت عبر ملايين "
            "السنين بفعل العوامل الطبيعية المختلفة. يبلغ عدد سكان المملكة أكثر من خمسة "
            "وثلاثين مليون نسمة ويعتبر الإسلام الدين الرسمي للدولة واللغة العربية هي اللغة "
            "الرسمية."
        ),
    ),
    "Persian": (
        "Arabic",
        (
            "ایران یا جمهوری اسلامی ایران کشوری در غرب آسیا و در منطقه خاورمیانه است که از "
            "شمال به ارمنستان، جمهوری آذربایجان و ترکمنستان، از شرق به افغانستان و پاکستان، "
            "از جنوب به خلیج فارس و دریای عمان و از غرب به ترکیه و عراق محدود است. تهران "
            "پایتخت و بزرگترین شهر ایران است. ایران با مساحتی حدود یک میلیون و ششصد و "
            "چهل و هشت هزار و صد و نود و پنج کیلومتر مربع هجدهمین کشور پهناور جهان است. "
            "جمعیت ایران حدود هشتاد و شش میلیون نفر است که آن را هجدهمین کشور پرجمعیت "
            "جهان قرار می‌دهد. ایران یکی از کهن‌ترین تمدن‌های جهان را در خود جای داده است."
        ),
    ),
    # ── Hebrew ───────────────────────────────────────────────────────────
    "Hebrew": (
        "Hebrew",
        (
            "מדינת ישראל היא מדינה במזרח התיכון השוכנת על החוף המזרחי של הים התיכון. היא "
            "גובלת בלבנון מצפון, בסוריה ובירדן ממזרח, במצרים מדרום מערב וברצועת עזה "
            "מדרום מערב. ישראל היא מדינה קטנה ומגוונת מאוד מבחינה גאוגרפית. שטחה כולל את "
            "מדבר הנגב בדרום, את רמת הגולן בצפון, את עמק הירדן במזרח ואת מישור החוף לאורך "
            "חופי הים התיכון. ירושלים היא בירת ישראל המוכרזת ומושבם של מוסדות השלטון "
            "המרכזיים. תל אביב היא המרכז הכלכלי והתרבותי של המדינה. אוכלוסיית ישראל "
            "מונה כתשעה וחצי מיליון תושבים והיא המדינה היהודית היחידה בעולם."
        ),
    ),
    # ── Devanagari ───────────────────────────────────────────────────────
    "Hindi": (
        "Devanagari",
        (
            "भारत गणराज्य दक्षिण एशिया में स्थित एक देश है। यह क्षेत्रफल के हिसाब से "
            "विश्व का सातवाँ सबसे बड़ा देश है और जनसंख्या के हिसाब से दूसरा सबसे बड़ा देश "
            "है। भारत के उत्तर में हिमालय पर्वत श्रृंखला है और दक्षिण में हिन्द महासागर "
            "है। पूर्व में बंगाल की खाड़ी और पश्चिम में अरब सागर है। भारत की राजधानी नई "
            "दिल्ली है और सबसे बड़ा शहर मुम्बई है। भारत एक संघीय संसदीय लोकतांत्रिक "
            "गणराज्य है जिसमें अट्ठाईस राज्य और आठ केन्द्र शासित प्रदेश हैं। भारत की "
            "अर्थव्यवस्था सकल घरेलू उत्पाद के हिसाब से विश्व की पाँचवीं सबसे बड़ी "
            "अर्थव्यवस्था है। भारत विविध संस्कृतियों, भाषाओं और धर्मों का देश है।"
        ),
    ),
    # ── Bengali ──────────────────────────────────────────────────────────
    "Bengali": (
        "Bengali",
        (
            "গণপ্রজাতন্ত্রী বাংলাদেশ দক্ষিণ এশিয়ার একটি সার্বভৌম রাষ্ট্র। বাংলাদেশের "
            "সাংবিধানিক নাম গণপ্রজাতন্ত্রী বাংলাদেশ। ভৌগোলিকভাবে বাংলাদেশের পশ্চিমে "
            "ভারতের পশ্চিমবঙ্গ, উত্তরে পশ্চিমবঙ্গ, আসাম ও মেঘালয়, পূর্বে আসাম, "
            "ত্রিপুরা ও মিজোরাম, দক্ষিণ-পূর্বে মায়ানমারের চিন ও রাখাইন রাজ্য এবং "
            "দক্ষিণে বঙ্গোপসাগর অবস্থিত। ভৌগোলিকভাবে পৃথিবীর বৃহত্তম বদ্বীপের সিংহভাগ "
            "অঞ্চল জুড়ে বাংলাদেশ ভূখণ্ড অবস্থিত। বাংলাদেশের রাজধানী ও বৃহত্তম শহর ঢাকা "
            "এবং দ্বিতীয় বৃহত্তম শহর চট্টগ্রাম। বাংলাদেশের জাতীয় ভাষা বাংলা।"
        ),
    ),
    # ── Tamil ────────────────────────────────────────────────────────────
    "Tamil": (
        "Tamil",
        (
            "தமிழ்நாடு இந்தியாவின் தெற்கே அமைந்துள்ள ஒரு மாநிலமாகும். இது வடக்கில் "
            "கர்நாடகம் மற்றும் ஆந்திரப் பிரதேசம், மேற்கில் கேரளம் ஆகிய மாநிலங்களை "
            "எல்லைகளாகக் கொண்டுள்ளது. கிழக்கிலும் தெற்கிலும் வங்காள விரிகுடா மற்றும் "
            "இந்தியப் பெருங்கடல் அமைந்துள்ளன. தமிழ்நாட்டின் தலைநகரம் சென்னை ஆகும். "
            "தமிழ்நாட்டின் பரப்பளவு ஒரு லட்சத்து முப்பதாயிரம் சதுர கிலோமீட்டர்களாகும். "
            "மக்கள் தொகை சுமார் எட்டு கோடியாகும். தமிழ் மொழி இம்மாநிலத்தின் அலுவல் "
            "மொழியாகும். தமிழ்நாடு இந்தியாவின் மிகவும் நகரமயமான மாநிலங்களில் ஒன்றாகும்."
        ),
    ),
    # ── CJK ──────────────────────────────────────────────────────────────
    "Chinese": (
        "CJK",
        (
            "中华人民共和国是位于东亚的社会主义国家，首都为北京。中国领土面积约九百六十万平方公里，"
            "是世界上面积第三大或第四大的国家。中国是世界上人口最多的国家之一，人口超过十四亿。"
            "中国疆域辽阔，地形多样，气候各异。东部沿海地区为平原，西部内陆地区有高原和山地。"
            "长江和黄河是中国最重要的两条河流。中国有着悠久的历史和灿烂的文化，是世界四大文明古国"
            "之一。中国经济总量位居世界第二，是全球最大的制造业国家和最大的货物贸易国。"
            "中国有五十六个民族，汉族是人口最多的民族，约占总人口的百分之九十二。中国共有二十三个"
            "省、五个自治区、四个直辖市和两个特别行政区。"
        ),
    ),
    "Japanese": (
        "CJK",
        (
            "日本国は東アジアに位置する島国である。国土は北海道、本州、四国、九州の四つの大きな島と "
            "多くの小さな島々から成り、太平洋と日本海に囲まれている。面積は約三十七万八千平方キロ "
            "メートルで、人口は約一億二千万人である。首都は東京であり、世界最大級の都市圏を形成して "
            "いる。日本は立憲君主制の国家であり、天皇を元首とし、国会が立法権を持つ。日本の経済は "
            "国内総生産で世界第三位であり、自動車や電子機器などの製造業が盛んである。日本語は日本の "
            "公用語であり、漢字、平仮名、片仮名の三種類の文字体系を使用する。日本は四季がはっきり "
            "しており、桜の花見や紅葉など季節の行事が文化の重要な一部となっている。"
        ),
    ),
    "Korean": (
        "CJK",
        (
            "대한민국은 동아시아에 있는 공화국이다. 서쪽으로는 서해를 사이에 두고 중화인민공화국이, "
            "동쪽으로는 동해를 사이에 두고 일본이 있으며, 북쪽으로는 조선민주주의인민공화국과 "
            "맞닿아 있다. 수도는 서울특별시이며, 국기는 태극기, 국가는 애국가이다. 대한민국의 "
            "인구는 약 오천백만 명이며, 국토 면적은 약 십만 제곱킬로미터이다. 대한민국은 "
            "세계에서 열두 번째로 큰 경제 규모를 가지고 있으며, 반도체, 자동차, 조선, 전자제품 "
            "등의 산업이 발달해 있다. 한국어는 대한민국의 공용어이며, 한글이라는 독자적인 "
            "문자 체계를 사용한다. 대한민국은 유교, 불교, 기독교 등 다양한 종교가 공존하는 "
            "다종교 국가이다."
        ),
    ),
    # ── Thai ─────────────────────────────────────────────────────────────
    "Thai": (
        "Thai",
        (
            "ประเทศไทยหรือชื่อทางการคือราชอาณาจักรไทยเป็นรัฐชาติอันตั้งอยู่ในเอเชียตะวัน"
            "ออกเฉียงใต้ เดิมมีชื่อว่าสยาม โดยมีพรมแดนทางทิศตะวันออกติดลาวและกัมพูชา "
            "ทิศใต้ติดอ่าวไทยและมาเลเซีย ทิศตะวันตกติดทะเลอันดามันและพม่า และทิศเหนือติด "
            "พม่าและลาว มีศูนย์กลางการบริหารราชการแผ่นดินอยู่ที่กรุงเทพมหานครซึ่งเป็น"
            "เมืองหลวง ประเทศไทยมีพื้นที่ประมาณห้าแสนหนึ่งหมื่นสามพันกิโลเมตร และมี"
            "ประชากรประมาณเจ็ดสิบล้านคน กรุงเทพมหานครเป็นศูนย์กลางทางเศรษฐกิจและเป็น"
            "เมืองท่าเรือที่สำคัญของประเทศ ภาษาไทยเป็นภาษาราชการ"
        ),
    ),
    # ── Georgian ─────────────────────────────────────────────────────────
    "Georgian": (
        "Georgian",
        (
            "საქართველო სახელმწიფოა აღმოსავლეთ ევროპისა და დასავლეთ აზიის გზაჯვარედინზე. "
            "მისი ფართობია სამოცდაცხრა ათას შვიდასი კვადრატული კილომეტრი, მოსახლეობა კი "
            "შეადგენს დაახლოებით სამ მილიონ შვიდას ათას ადამიანს. საქართველო ესაზღვრება "
            "ჩრდილოეთით რუსეთს, სამხრეთით თურქეთსა და სომხეთს, აღმოსავლეთით "
            "აზერბაიჯანს, ხოლო დასავლეთით შავ ზღვას. დედაქალაქია თბილისი, რომელიც "
            "ამავდროულად ქვეყნის უდიდესი ქალაქია. საქართველოს აქვს მდიდარი ისტორია და "
            "კულტურა. ქართული ენა ერთ-ერთი უძველესი ენაა მსოფლიოში და მას საკუთარი "
            "უნიკალური დამწერლობა გააჩნია."
        ),
    ),
    # ── Armenian ─────────────────────────────────────────────────────────
    "Armenian": (
        "Armenian",
        (
            "\u0540\u0561\u0575\u0561\u057d\u057f\u0561\u0576\u056b "  # Hayastani
            "\u0540\u0561\u0576\u0580\u0561\u057a\u0565\u057f\u0578\u0582\u0569\u0575\u0578\u0582\u0576\u0568 "  # Hanrapetut'yuny
            "\u057a\u0565\u057f\u0578\u0582\u0569\u0575\u0578\u0582\u0576 \u0567 "  # petut'yun e
            "\u0540\u0561\u0580\u0561\u057e\u0561\u0575\u056b\u0576 "  # Haravayin
            "\u053f\u0578\u057e\u056f\u0561\u057d\u0578\u0582\u0574\u0589 "  # Kovkasum.
            "\u0540\u0561\u0575\u0561\u057d\u057f\u0561\u0576\u0568 "  # Hayastany
            "\u057d\u0561\u0570\u0574\u0561\u0576\u0561\u056f\u0578\u0582\u0574 \u0567 "  # sahmanakom e
            "\u0540\u0561\u0580\u0561\u057e\u0578\u0582\u0574 "  # Haravum
            "\u054e\u0580\u0561\u057d\u057f\u0561\u0576\u056b "  # Vrastani
            "\u0587 "  # yev
            "\u0539\u0578\u0582\u0580\u0584\u056b\u0561\u0575\u056b "  # T'urk'iayi
            "\u0570\u0565\u057f\u0589 "  # het.
            "\u0540\u0561\u0575\u0561\u057d\u057f\u0561\u0576\u056b "  # Hayastani
            "\u0574\u0561\u0575\u0580\u0561\u0584\u0561\u0572\u0561\u0584\u0576 \u0567 "  # mayrak'aghak'y e
            "\u0535\u0580\u0587\u0561\u0576\u0568\u0589 "  # Yerevany.
            "\u0540\u0561\u0575\u0561\u057d\u057f\u0561\u0576\u056b "  # Hayastani
            "\u057f\u0561\u0580\u0561\u056e\u0584\u0568 "  # taratsqy
            "\u056f\u0561\u0566\u0574\u0578\u0582\u0574 \u0567 "  # kazmum e
            "\u0574\u0578\u057f "  # mot
            "\u0584\u057d\u0561\u0576\u056b\u0576\u056b\u0576\u0568 "  # k'sanininy
            "\u0570\u0561\u0566\u0561\u0580 "  # hazar
            "\u0584\u0561\u057c\u0561\u056f\u0578\u0582\u057d\u056b "  # k'arrakusi
            "\u056f\u056b\u056c\u0578\u0574\u0565\u057f\u0580\u0589"  # kilometr.
        ),
    ),
    # ── Ethiopic ─────────────────────────────────────────────────────────
    "Amharic": (
        "Ethiopic",
        (
            "የኢትዮጵያ ፌዴራላዊ ዲሞክራሲያዊ ሪፐብሊክ መንግሥት የፌዴራሉ መንግስት ሁለት ምክር ቤቶች "
            "ሲኖሩት እነሱም የሕዝብ ተወካዮች ምክር ቤትና የፌዴሬሽን ምክር ቤት ናቸው። የሕዝብ ተወካዮች "
            "ምክር ቤት ከፍተኛው የሕግ አውጪ አካል ሲሆን አባላቱ በቀጥታ በሕዝብ ይመረጣሉ። ኢትዮጵያ "
            "በምሥራቅ አፍሪካ የምትገኝ ሀገር ሲሆን ከአፍሪካ ሁለተኛዋ ብዙ ሕዝብ ያላት ሀገር ናት። "
            "ዋና ከተማዋ አዲስ አበባ ስትሆን የአፍሪካ ኅብረት ዋና መሥሪያ ቤትም በዚሁ ከተማ ይገኛል። "
            "ኢትዮጵያ ከጥንት ጀምሮ ዐፄ ካሣ ሥርዓት ነበራት። የኢትዮጵያ ታሪክ ከሦስት ሺ ዓመታት "
            "በላይ ይዘልቃል።"
        ),
    ),
    # ── Tibetan ──────────────────────────────────────────────────────────
    "Tibetan": (
        "Tibetan",
        (
            "བོད་རང་སྐྱོང་ལྗོངས་ནི་རྒྱ་ནག་གི་ཁོངས་གཏོགས་རང་སྐྱོང་ལྗོངས་ཤིག་ཡིན། "
            "བོད་ཀྱི་ས་ཁུལ་ནི་འཛམ་གླིང་གི་མཐོ་ས་ཆེས་མཐོ་ཤོས་ཀྱི་ས་ཁུལ་ཡིན་པས་ "
            "འཛམ་གླིང་གི་ཐོག་མ་ཞེས་འབོད། བོད་ཀྱི་རྒྱལ་ས་ནི་ལྷ་ས་ཡིན། བོད་མི་རིགས་ "
            "ནི་ཆོས་ལུགས་ལ་དད་པ་ཆེ་བའི་མི་རིགས་ཤིག་ཡིན། ནང་པ་སངས་རྒྱས་པའི་ "
            "ཆོས་ལུགས་ནི་བོད་ཀྱི་ཆོས་ལུགས་གཙོ་བོ་ཡིན། བོད་སྐད་ནི་བོད་ཀྱི་སྐད་ཡིག་ "
            "གཙོ་བོ་ཡིན་ལ་བོད་ཡིག་ཅེས་པའི་ཡི་གེ་ནི་བོད་ཀྱི་ཡི་གེ་ཡིན།"
        ),
    ),
    # ── Myanmar ──────────────────────────────────────────────────────────
    "Myanmar": (
        "Myanmar",
        (
            "မြန်မာနိုင်ငံသည် အရှေ့တောင်အာရှတွင် တည်ရှိသော နိုင်ငံတစ်ခုဖြစ်သည်။ "
            "မြန်မာနိုင်ငံသည် အရှေ့တောင်အာရှ၏ အကြီးဆုံးနိုင်ငံဖြစ်ပြီး "
            "ဧရိယာအကျယ်အဝန်းမှာ ခြောက်သိန်းခုနှစ်ထောင်ကျော် စတုရန်းကီလိုမီတာ "
            "ရှိသည်။ မြန်မာနိုင်ငံ၏ မြို့တော်မှာ နေပြည်တော်ဖြစ်ပြီး အကြီးဆုံးမြို့မှာ "
            "ရန်ကုန်ဖြစ်သည်။ မြန်မာနိုင်ငံတွင် လူဦးရေ ငါးထောင်သုံးရာကျော်သန်း "
            "နေထိုင်ကြသည်။ မြန်မာဘာသာစကားသည် နိုင်ငံ၏ တရားဝင်ဘာသာစကားဖြစ်သည်။"
        ),
    ),
    # ── Khmer ────────────────────────────────────────────────────────────
    "Khmer": (
        "Khmer",
        (
            "ព្រះរាជាណាចក្រកម្ពុជា ជាប្រទេសមួយស្ថិតនៅក្នុងតំបន់អាស៊ីអាគ្នេយ៍ មានព្រំដែន "
            "ជាប់នឹងប្រទេសថៃនៅទិសខាងលិច និងទិសពាយ័ព្យ ប្រទេសលាវនៅទិសខាងជើង "
            "ប្រទេសវៀតណាមនៅទិសខាងកើត និងឈូងសមុទ្រថៃនៅទិសខាងត្បូង។ រាជធានី "
            "ភ្នំពេញជាទីក្រុងធំបំផុតនិងជាមជ្ឈមណ្ឌលនយោបាយ សេដ្ឋកិច្ច និងវប្បធម៌ "
            "របស់កម្ពុជា។ ប្រទេសកម្ពុជាមានប្រជាជនប្រមាណ ១៧ លាននាក់ ហើយជាប្រទេស "
            "ដែលមានប្រវត្តិសាស្ត្រយូរអង្វែង។ ភាសាខ្មែរជាភាសាផ្លូវការរបស់កម្ពុជា។"
        ),
    ),
    # ── Sinhala ──────────────────────────────────────────────────────────
    "Sinhala": (
        "Sinhala",
        (
            "ශ්‍රී ලංකා ප්‍රජාතාන්ත්‍රික සමාජවාදී ජනරජය දකුණු ආසියාවේ පිහිටි දූපත් "
            "රටකි. එය ඉන්දියානු උප මහාද්වීපයේ දකුණු කෙළවරේ පිහිටා ඇත. ශ්‍රී ලංකාවේ "
            "ජනගහනය මිලියන විසි දෙකකට ආසන්න වේ. රටේ නිල භාෂා සිංහල සහ දෙමළ වේ. "
            "ශ්‍රී ජයවර්ධනපුර කෝට්ටේ නීතිමය අගනුවර වන අතර කොළඹ වාණිජ අගනුවර වේ. "
            "ශ්‍රී ලංකාවට වසර දෙදහස් පන්සියයකට වැඩි ලිඛිත ඉතිහාසයක් ඇත. එය බුද්ධාගම "
            "ආරක්ෂා කිරීමේ කේන්ද්‍රස්ථානයක් ලෙස සැලකේ."
        ),
    ),
    # ── Lao ──────────────────────────────────────────────────────────────
    "Lao": (
        "Lao",
        (
            "ສາທາລະນະລັດ ປະຊາທິປະໄຕ ປະຊາຊົນລາວ ແມ່ນປະເທດທີ່ບໍ່ມີທາງອອກສູ່ທະເລ "
            "ຕັ້ງຢູ່ໃຈກາງຂອງຄາບສະໝຸດອິນດູຈີນ ໃນເຂດອາຊີຕາເວັນອອກສຽງໃຕ້ ມີພົມແດນ "
            "ຕິດຈີນທາງທິດເໜືອ ຕິດຫວຽດນາມທາງທິດຕາເວັນອອກ ຕິດກຳປູເຈຍທາງທິດໃຕ້ "
            "ຕິດໄທທາງທິດຕາເວັນຕົກ ແລະ ຕິດມຽນມາທາງທິດຕາເວັນຕົກສຽງເໜືອ ນະຄອນຫຼວງ "
            "ວຽງຈັນ ແມ່ນເມືອງຫຼວງ ແລະ ເປັນເມືອງທີ່ໃຫຍ່ທີ່ສຸດຂອງປະເທດ ພາສາລາວ "
            "ເປັນພາສາທາງການ ປະຊາກອນລາວມີປະມານ ເຈັດລ້ານຄົນ"
        ),
    ),
    # ── Gujarati ─────────────────────────────────────────────────────────
    "Gujarati": (
        "Gujarati",
        (
            "ગુજરાત ભારતનું એક રાજ્ય છે જે ભારતના પશ્ચિમ ભાગમાં આવેલું છે. ગુજરાતનું "
            "ક્ષેત્રફળ એક લાખ છપ્પન હજાર ચોરસ કિલોમીટર છે. ગુજરાતની વસ્તી લગભગ છ "
            "કરોડ છે. ગુજરાતની રાજધાની ગાંધીનગર છે અને સૌથી મોટું શહેર અમદાવાદ છે. "
            "ગુજરાત ભારતનું સૌથી વધુ ઔદ્યોગિક રાજ્ય છે. ગુજરાતી ભાષા ગુજરાતની "
            "સત્તાવાર ભાષા છે. ગુજરાતનો સમૃદ્ધ ઇતિહાસ છે જે સિંધુ ખીણની સંસ્કૃતિના "
            "સમયથી શરૂ થાય છે. મહાત્મા ગાંધી ગુજરાતના પોરબંદરમાં જન્મ્યા હતા."
        ),
    ),
    # ── Telugu ───────────────────────────────────────────────────────────
    "Telugu": (
        "Telugu",
        (
            "తెలుగు భాష ద్రావిడ భాషా కుటుంబానికి చెందిన భాష. ఇది ముఖ్యంగా ఆంధ్రప్రదేశ్ "
            "మరియు తెలంగాణ రాష్ట్రాలలో మాట్లాడబడుతుంది. తెలుగు భారతదేశంలో అత్యధిక "
            "మంది మాట్లాడే భాషలలో మూడవ స్థానంలో ఉంది. తెలుగు భాషకు రెండు వేల సంవత్సరాల "
            "పై చరిత్ర ఉంది. తెలుగు లిపి కన్నడ లిపికి దగ్గరగా ఉంటుంది. తెలుగు సాహిత్యం "
            "చాలా సమృద్ధంగా ఉంది. ఆంధ్రప్రదేశ్ రాజధాని అమరావతి మరియు తెలంగాణ రాజధాని "
            "హైదరాబాద్."
        ),
    ),
    # ── Kannada ──────────────────────────────────────────────────────────
    "Kannada": (
        "Kannada",
        (
            "ಕರ್ನಾಟಕ ದಕ್ಷಿಣ ಭಾರತದ ಒಂದು ರಾಜ್ಯವಾಗಿದೆ. ಇದರ ರಾಜಧಾನಿ ಬೆಂಗಳೂರು. "
            "ಕರ್ನಾಟಕದ ವಿಸ್ತೀರ್ಣ ಒಂದು ಲಕ್ಷ ತೊಂಬತ್ತೊಂದು ಸಾವಿರ ಚದರ ಕಿಲೋಮೀಟರ್. "
            "ಕರ್ನಾಟಕದ ಜನಸಂಖ್ಯೆ ಆರು ಕೋಟಿಗಿಂತ ಹೆಚ್ಚು. ಕನ್ನಡ ಭಾಷೆ ಕರ್ನಾಟಕದ "
            "ಅಧಿಕೃತ ಭಾಷೆ. ಕನ್ನಡ ಭಾಷೆಗೆ ಎರಡು ಸಾವಿರ ವರ್ಷಗಳ ಇತಿಹಾಸವಿದೆ. ಕರ್ನಾಟಕ "
            "ಭಾರತದ ಮಾಹಿತಿ ತಂತ್ರಜ್ಞಾನ ಉದ್ಯಮದ ಕೇಂದ್ರವಾಗಿದೆ. ಬೆಂಗಳೂರು ಭಾರತದ "
            "ಸಿಲಿಕಾನ್ ಕಣಿವೆ ಎಂದು ಕರೆಯಲ್ಪಡುತ್ತದೆ."
        ),
    ),
    # ── Malayalam ─────────────────────────────────────────────────────────
    "Malayalam": (
        "Malayalam",
        (
            "കേരളം ഇന്ത്യയിലെ ഒരു സംസ്ഥാനമാണ്. ഇത് ഇന്ത്യയുടെ തെക്കുപടിഞ്ഞാറേ "
            "മൂലയിൽ സ്ഥിതി ചെയ്യുന്നു. കേരളത്തിന്റെ വിസ്തീർണ്ണം മുപ്പത്തിയെട്ടായിരത്തി "
            "എണ്ണൂറ്റിയൊൻപത് ചതുരശ്ര കിലോമീറ്റർ ആണ്. ജനസംഖ്യ ഏകദേശം മൂന്നു കോടി "
            "മുപ്പത്തി നാലു ലക്ഷം ആണ്. തിരുവനന്തപുരം കേരളത്തിന്റെ തലസ്ഥാനമാണ്. "
            "മലയാളം കേരളത്തിന്റെ ഔദ്യോഗിക ഭാഷയാണ്. കേരളം ഇന്ത്യയിലെ ഏറ്റവും "
            "സാക്ഷരത കൂടിയ സംസ്ഥാനമാണ്."
        ),
    ),
}


def main():
    libraries: dict[str, callable] = {}

    try:
        from translit import transliterate

        libraries["translit"] = transliterate
    except ImportError:
        print("translit not installed, skipping")

    try:
        from unidecode import unidecode

        libraries["Unidecode"] = unidecode
    except ImportError:
        print("Unidecode not installed, skipping")

    try:
        from text_unidecode import unidecode as text_unidecode

        libraries["text-unidecode"] = text_unidecode
    except ImportError:
        print("text-unidecode not installed, skipping")

    try:
        from anyascii import anyascii

        libraries["anyascii"] = anyascii
    except ImportError:
        print("anyascii not installed, skipping")

    if not libraries:
        print("No libraries to benchmark!")
        sys.exit(1)

    # Group texts by script family
    groups: dict[str, list[tuple[str, str]]] = {}
    for label, (group, text) in BENCH_TEXTS.items():
        groups.setdefault(group, []).append((label, text))

    lib_names = list(libraries.keys())
    header = f"  {'Text':20s} {'chars':>5s}"
    for name in lib_names:
        header += f"  {name:>14s}"
    if len(lib_names) >= 2:
        header += f"  {'ratio':>7s}"

    print("=" * len(header))
    print("Transliteration Benchmark — Natural Wikipedia Texts")
    print("=" * len(header))

    all_results: list[tuple[str, int, dict[str, float]]] = []

    for group_name, texts in groups.items():
        print(f"\n── {group_name} {'─' * (len(header) - len(group_name) - 4)}")
        print(header)
        print("  " + "─" * (len(header) - 2))

        for label, text in texts:
            results: dict[str, float] = {}
            for name, func in libraries.items():
                cps = bench_library(name, func, text)
                results[name] = cps

            row = f"  {label:20s} {len(text):>5d}"
            for name in lib_names:
                row += f"  {results[name]:>12,.0f}/s"
            if len(lib_names) >= 2 and "translit" in results:
                second = lib_names[1]
                if results[second] > 0:
                    ratio = results["translit"] / results[second]
                    row += f"  {ratio:>6.1f}x"
            print(row)
            all_results.append((label, len(text), results))

    # Summary
    print(f"\n{'=' * len(header)}")
    print("Summary (geometric mean chars/sec across all texts)")
    print("─" * len(header))

    import math

    for name in lib_names:
        speeds = [r[name] for _, _, r in all_results if name in r]
        if speeds:
            geo_mean = math.exp(sum(math.log(s) for s in speeds) / len(speeds))
            print(f"  {name:20s}: {geo_mean:>12,.0f} chars/sec")


if __name__ == "__main__":
    main()
