android拼音转汉字,安卓汉字转拼音库 – TinyPinyin

适用于Java和Android的快速、低内存占用的汉字转拼音库。

特性

生成的拼音不包含声调,也不处理多音字,默认一个汉字对应一个拼音;

拼音均为大写;

无需初始化,执行效率很高(Pinyin4J的4倍);

很低的内存占用(小于30KB)。

使用

API

/**

* 如果c为汉字,则返回大写拼音;如果c不是汉字,则返回String.valueOf(c)

*/

String Pinyin.toPinyin(char c)

/**

* c为汉字,则返回true,否则返回false

*/

boolean Pinyin.isChinese(char c)

添加到工程

buildscript {

repositories {

jcenter()

}

dependencies {

compile 'com.github.promeg:tinypinyin:1.0.0' // ~80KB

}

}

详细说明

1. 设计目标

Pinyin4J的问题

Jar文件较大,205KB;

Pinyin4J的PinyinHelper.toHanyuPinyinStringArray 在第一次调用时耗时非常长(~2000ms);

功能臃肿,许多情况下我们不需要声调、方言,(暂时)也不需要处理一字多音的情况;

内存占用太高;

TinyPinyin特性

转换后的结果? 不

?包含声调和方言,也? 不

?处理多音字,默认一个汉字仅对应一个拼音;

无需初始化,保证多次调用时,有稳定的返回时间;

尽可能低的内存占用;

比Pinyin4J更快的转换速度。

2. Correctness

以Pinyin4J作为基准,确保对所有的字符(Character.MAX_VALUE ~ Character.MIN_VALUE),TinyPinyin与Pinyin4J有相同的返回结果。

(Pinyin4J采用无声调的输出,多音字取第一个拼音进行对比)

该部分请见PinyinTest.java

采用以下命令运行test:

./gradlew :lib:test

3. Effectiveness

速度

使用 JMH

工具得到bechmark,对比TinyPinyin和Pinyin4J的运行速度。

具体测例请见PinyinSampleBenchmark.java。

采用以下命令运行benchmark:

./gradlew :lib:jmh

生成的报告在 pinyinhelper/build/reports/jmh/ 中,运行一次约耗时 5min。

Benchmark

Mode

Samples

Score

Unit

TinyPinyin.isChinese

thrpt

40

181

ops/us

TinyPinyin.isChinese(内存优化后)

thrpt

40

185

ops/us

Pinyin4J.isChinese

thrpt

40

39

ops/us

TinyPinyin.toPinyin

thrpt

40

174

ops/us

TinyPinyin.toPinyin(内存优化后)

thrpt

40

160

ops/us

Pinyin4J.toPinyin

thrpt

40

40

ops/us

内存占用

3个static byte[7000] 存储所有汉字的拼音的低8位,占用7000 * 1 * 3 = 21KB 内存;

3个static byte[7000/8] 存储所有汉字的拼音的第9位(最高位),占用7000 / 8 * 1 * 3 = 3KB 内存;

一个String[408] 存储所有可能的拼音,占用 1.7KB 内存;

共占用 < 30KB.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值