今天接到一个优化性能的任务,把一个过滤非汉字字符的算法性能提高一下,原来方法使用了如下方法:
if (Character.UnicodeBlock.of(c) == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS)
这个方法内部使用了一个二分查找的算法在一个100多个元素的数组中查找对应的UnicodeBlock,对于一个50K的html文件说,性能非常差。
经过查看发现,其实中文字符的Unicode区间只有以下几种:
所以对于我们这个简单的算法只要判断字符是否在0x4E00~0X9FFF之间就可以了,实现后仅仅这个因素性能提升就可以提升7倍(当然还有方法调用的消耗)。
本文介绍了一种提高非汉字字符过滤算法性能的方法。通过简化Unicode区间判断,避免了原有的二分查找,使得处理50K大小HTML文件的速度提升了7倍。
8492

被折叠的 条评论
为什么被折叠?



