使用Java语言进行Unicode代理编程 - 编程入门网
the length of str
int[] acp = new int[str.codePointCount(0, len)];
int j = 0; // an index for acp
for (int i = 0, cp; i < len; i += Character.charCount(cp)) {
cp = str.codePointAt (i);
acp[j++] = cp;
}
return acp;
}
清单 5 的处理时间降低到比 示例 1-1 长 1.68 倍。 示例 1-6:访问一个 char 数组 清单 6 在使用 示例 1-5 中展 示的优化的同时直接访问一个 char 类型数组: 清单 6. 使用一个 char 数组的优化支持
char 数组 是使用 toCharArray() 从字符串复制而来的。性能得到改善,因为对数组的直 接访问比通过一个方法的间接访问要快。处理时间比 示例 1-1 长 1.51 倍。但 是,当调用时,toCharArray() 需要一些开销来创建一个新数组并将数据复制到 数组中。String 类提供的那些方便的方法也不能被使用。但是,这个算法在处 理大量数据时有用。 示例 1-7:一个面向对象的算法 这个示例的 面向对象算法使用 CharBuffer 类,如清单 7 所示: 清单 7. 使用 CharSequence 的面向对象算法
与前面的示例不同,清单 7 不 需要一个索引来持有当前位置以便进行顺序访问。相反,CharBuffer 在内部跟 踪当前位置。Character 类提供静态方法 codePointCount() 和 codePointAt() ,它们能通过 CharSequence 接口处理 CharBuffer。CharBuffer 总是将当前位 置设置为 CharSequence 的头。因此,当 codePointAt() 被调用时,第二个参 数总是设置为 0。处理时间比 示例 1-1 长 2.15 倍。 使用Java语言进行Unicode代理编程(4)时间:2010-11-20 IBM Masahiko Maedera处理时间比较 这些顺序访问示例的计时测试使用了一个包含 10,000 个代理对和 10,000 个非代理对的样例字符串。码位数组从这个字符串创建 10,000 次。测 试环境包括: OS:Microsoft Windows® XP Professional SP2 Java:IBM Java 1.5 SR7 CPU:Intel® Core 2 Duo CPU T8300 @ 2.40GHz Memory:2.97GB RAM 表 1 展示了示例 1-1 到 1-7 的绝 对和相对处理时间以及关联的 API: 表 1. 顺序访问示例的处理时间和 API
|
||||||||||||||||||||||||||||||||||||||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |