【发布时间】:2011-11-18 14:53:48
【问题描述】:
将字符串用作字符串对象对于许多字符串处理任务来说非常方便。
我需要提取一些子字符串来处理,Scala String 类为我提供了这样的功能。但这相当昂贵:每次使用 substring 函数时都会创建新的 String 对象。使用元组 (string : String, start : Int, stop : Int) 可以解决性能问题,但会使代码变得复杂。
是否有任何用于创建字符串代理的库,它存储原始字符串、范围限制并与其他字符串函数兼容?
【问题讨论】:
-
您是否有显示字符串比元组慢的基准,或者您只是在猜测?
-
只是猜测。元组意味着其他处理方式:逐字符迭代。它比复制字符串来处理它要快。但是
startsWith等方便的功能应该手动实现 -
你说
a new String object is created every time substring function is used。是什么让你这么说?因为一般情况下(例如 Sun 的 Hotspot VM)并非如此。 -
严格来说,每次调用 substring 方法时都会创建一个新的字符串对象。但是,子字符串和原始字符串共享相同的字符数组。
标签: scala