在讨论 rope 上的正则表达式搜索性能的优化时,还会提到 Rope 迭代。
用 Rope.write 对输出进行优化
在某种程度上,多数 rope 实例都必须写入到某些位置,通常写到一个流内。不幸的是,将对象写入流就要调用对象的 toString 方法。这种序列化方式强行在写入一个字符之前在内存中建立整个对象的字符串表示,对于大型对象来说,这是个非常大的性能拖累。Ropes for Java 设计的时候就考虑了大型的字符串对象,所以它提供了更好的方式。
为了提高性能,Rope 引入了一个 write 方法,接受一个 Writer 和一个范围说明,然后将 rope 的指定范围的字符写到 writer。这样就节省了用 rope 构建 String 的时间和内存开支,对于大型 rope 来说,这种开支是相当巨大的。清单 4 显示了 rope 输出的标准方式和增强方式。