use shlesha::Shlesha;
use std::time::Instant;
fn main() {
let transliterator = Shlesha::new();
let iast_text = "dharma yoga bhārata saṃskṛta veda upaniṣad gītā rāmāyaṇa mahābhārata";
let deva_text = "धर्म योग भारत संस्कृत वेद उपनिषद् गीता रामायण महाभारत";
println!("=== Profiling Shlesha Performance ===\n");
println!("Roman → Devanagari conversions (Shlesha weakness):");
let start = Instant::now();
for _ in 0..1000 {
let _ = transliterator
.transliterate(iast_text, "iast", "devanagari")
.unwrap();
}
let elapsed = start.elapsed();
println!(
"IAST → Devanagari: {} chars/sec",
(iast_text.len() * 1000) as f64 / elapsed.as_secs_f64()
);
let start = Instant::now();
for _ in 0..1000 {
let _ = transliterator
.transliterate(iast_text, "iast", "tamil")
.unwrap();
}
let elapsed = start.elapsed();
println!(
"IAST → Tamil: {} chars/sec",
(iast_text.len() * 1000) as f64 / elapsed.as_secs_f64()
);
println!("\nRoman → Roman conversions (Shlesha weakness):");
let start = Instant::now();
for _ in 0..1000 {
let _ = transliterator
.transliterate(iast_text, "iast", "itrans")
.unwrap();
}
let elapsed = start.elapsed();
println!(
"IAST → ITRANS: {} chars/sec",
(iast_text.len() * 1000) as f64 / elapsed.as_secs_f64()
);
let start = Instant::now();
for _ in 0..1000 {
let _ = transliterator
.transliterate(iast_text, "iast", "slp1")
.unwrap();
}
let elapsed = start.elapsed();
println!(
"IAST → SLP1: {} chars/sec",
(iast_text.len() * 1000) as f64 / elapsed.as_secs_f64()
);
println!("\nDevanagari → Indic conversions (Shlesha strength):");
let start = Instant::now();
for _ in 0..1000 {
let _ = transliterator
.transliterate(deva_text, "devanagari", "tamil")
.unwrap();
}
let elapsed = start.elapsed();
println!(
"Devanagari → Tamil: {} chars/sec",
(deva_text.len() * 1000) as f64 / elapsed.as_secs_f64()
);
let start = Instant::now();
for _ in 0..1000 {
let _ = transliterator
.transliterate(deva_text, "devanagari", "telugu")
.unwrap();
}
let elapsed = start.elapsed();
println!(
"Devanagari → Telugu: {} chars/sec",
(deva_text.len() * 1000) as f64 / elapsed.as_secs_f64()
);
println!("\nDevanagari → Roman conversions:");
let start = Instant::now();
for _ in 0..1000 {
let _ = transliterator
.transliterate(deva_text, "devanagari", "iast")
.unwrap();
}
let elapsed = start.elapsed();
println!(
"Devanagari → IAST: {} chars/sec",
(deva_text.len() * 1000) as f64 / elapsed.as_secs_f64()
);
let start = Instant::now();
for _ in 0..1000 {
let _ = transliterator
.transliterate(deva_text, "devanagari", "itrans")
.unwrap();
}
let elapsed = start.elapsed();
println!(
"Devanagari → ITRANS: {} chars/sec",
(deva_text.len() * 1000) as f64 / elapsed.as_secs_f64()
);
}