10 个版本 (6 个稳定版)
3.0.0 | 2023年1月19日 |
---|---|
2.1.2 | 2023年1月16日 |
2.1.0 | 2021年12月19日 |
2.0.1 | 2019年11月19日 |
0.9.2 | 2018年2月8日 |
在 文本处理 分类中排名第 159
每月下载量 3,192 次
在 5 个crate中使用(4个直接使用)
415KB
9K SLoC
WanaKana Rust
ワナカナ <--> WanaKana <--> わなかな
[dependencies]
wana_kana = "2.0"
用于检查和转换日本文字(平假名、片假名)与罗马字之间的工具库(从 https://github.com/WaniKani/WanaKana V4.0.2 版本移植过来)
示例
use wana_kana::to_romaji::*;
use wana_kana::to_kana::*;
use wana_kana::to_hiragana::*;
use wana_kana::Options;
assert_eq!(to_romaji("ワナカナ"), "wanakana");
assert_eq!(to_hiragana("WanaKana"), "わなかな");
assert_eq!(to_kana("WANAKANA"), "ワナカナ");
测试
性能
在迁移到 2.0 版本后,通过使用更高效的查找结构和避免分配,实现了性能改进。根据这些结果,在 Core i7-6700 上每毫秒可以转换大约 1000 个单词。
bench_hiragana_to_romaji 3,519 1,070 -2,449 -69.59% x 3.29
bench_kana_1 3,066 567 -2,499 -81.51% x 5.41
bench_kana_2 8,006 1,831 -6,175 -77.13% x 4.37
bench_katakana_to_hiragana 2,512 622 -1,890 -75.24% x 4.04
bench_katakana_to_katakana 1,664 629 -1,035 -62.20% x 2.65
bench_katakana_to_romaji 6,922 1,067 -5,855 -84.59% x 6.49
bench_romaji_to_hiragana 3,802 1,300 -2,502 -65.81% x 2.92
bench_romaji_to_katakana 4,361 1,929 -2,432 -55.77% x 2.26
与 WanaKana 的比较
在 bench_compare 子目录中进行了详细分析,以下分析可能不准确。
简短的比较表明性能提高了大约 25 倍
import toKana from './src/toKana';
import toHiragana from './src/toHiragana';
import toKatakana from './src/toKatakana';
import toRomaji from './src/toRomaji';
console.time("yo")
for (var i = 0; i < 1000; i++) {
toKana('aiueosashisusesonaninunenokakikukeko')
toKana('AIUEOSASHISUSESONANINUNENOKAKIKUKEKO')
toHiragana('aiueosashisusesonaninunenokakikukeko')
toHiragana('アイウエオサシスセソナニヌネノカキクケコ')
toKatakana('aiueosashisusesonaninunenokakikukeko')
toKatakana('あいうえおさしすせそなにぬねのかきくけこ')
toRomaji('あいうえおさしすせそなにぬねのかきくけこ')
toRomaji('アイウエオサシスセソナニヌネノカキクケコ')
}
console.timeEnd("yo")
node-r esm run.js
extern crate wana_kana;
use wana_kana::to_hiragana::to_hiragana;
use wana_kana::to_katakana::to_katakana;
use wana_kana::to_romaji::to_romaji;
use wana_kana::to_kana::*;
fn main() {
let start = std::time::Instant::now();
for _ in 0..1000 {
to_kana("aiueosashisusesonaninunenokakikukeko");
to_kana("AIUEOSASHISUSESONANINUNENOKAKIKUKEKO");
to_hiragana("aiueosashisusesonaninunenokakikukeko");
to_hiragana("アイウエオサシスセソナニヌネノカキクケコ");
to_katakana("aiueosashisusesonaninunenokakikukeko");
to_katakana("あいうえおさしすせそなにぬねのかきくけこ");
to_romaji("あいうえおさしすせそなにぬねのかきくけこ");
to_romaji("アイウエオサシスセソナニヌネノカキクケコ");
}
println!("{:?}", start.elapsed().as_millis());
}
node -r esm run.js
253.231ms
cargo run --release --bin bench
9ms
命令行界面
用于娱乐和盈利将假名和罗马字相互转换
cargo install wana_kana
将安装 2 个命令行工具: to_kana
和 to_romaji
。
两个命令都支持管道 ls | to_kana
和参数 to_romaji へろ をるど
。
依赖
~19–630KB
~10K SLoC