|
发表于 2024-2-23 18:36:11
|
显示全部楼层
福建省宁德市
不知道你怎么写的
测试了下,取拼音()这个命令效率还是可以的,100万次用了370ms,这个应该不会成为效率的瓶颈
1.全局缓冲区指针=申请内存(1024*1024*1)//申请1mb缓冲区,用于储存汉字转拼音的缓冲区,正常来说一行字幕就10几个子,1mb足够了,不够自行扩展,事先申请的目的是减少频繁申请内存的时间消耗,如:文本=文本+取拼音() ,这个过程实际上就是不断的申请新内存,复制旧文本到新内存,效率极低
2.先取出字幕文本的指针地址,然后 用精易模块的 __get_byte() //指针到字节
字节 =__get_byte(p,i-1)
如果是字节集数据,就不用取指针,直接
字节 =字节集
效率比:字节 = 取代码(文本,i)要快的多
3.将文本转换为拼音
可参考精易模块是否汉字相关命令,不过要自行改动下,提高转换效率,精易模块未做效率优化
判断第一个字节是否是A1-FE(161-254),如果是判断下一个字节是否是B0-F7(176-247)
一个汉字=2个字节{低字节,高字节}
低字节范围:A1-FE(161-254)
高字节范围:B0-F7(176-247)
占用的码位:72*94=6768,其中有5个空位是D7FA-D7FE 如果不是汉字则将字节追加写入全局缓冲区指针
如果是汉字,则连续 取拼音(),递增判断n个汉字是否是 关键字 he bei,是则将拼音结果追加写入缓冲区,不是则照抄追加
最后替换结果如:欢迎来到喝杯省=>欢迎来到he bei省
4.替换拼音过程
得到:欢迎来到he bei省
循环寻找关键字数组,如:he bei ,找到了再执行替换子文本()命令
先寻找,找到再替换,比不寻找直接替换相对来说速度会更快(如果不存在关键字的情况,底层会少去申请复制内存的过程)
总的来说就是要减少不必要的重复过程,如申请内存,复制内存操作
速度会提高非常多,就是过程会繁琐一些
|
|