哪种解决方案具有更好的性能:StringBuilder或String Interpolation-Concatenation

Fil*_*nda 3 string stringbuilder scala string-interpolation

我正在使用Scala将文件写入磁盘.

要创建将写入文件的整个String,我正在迭代我的数据并将所有信息附加到StringBuilder对象.

例如:

val moreData = getMoreData
strBuilder.append(moreData)
strBuilder.append("even more data")
//...
strBuilder.toString
Run Code Online (Sandbox Code Playgroud)

在操作结束时,我然后调用StringBuilder的toString方法,并写入Path.

我知道Scala对字符串有编译优化,所以我的问题是:

哪种方法具有更好的性能.String-Interpolation-Concatenation或StringBuilder?

这些编译优化是否与StringBuilder有某种关联?换句话说,StringBuilder追加操作是否有优化?

Rex*_*err 5

字符串插值连接使用a StringBuilder来生成其结果.有可能更多地优化字符串插值,但就目前而言,它主要是为表现力而非性能而设计的.StringBuilder如果您知道字符串创建将会受到限制,您应该使用它,并且这样做并不难.如果你知道,或者你知道它不是一个主要问题,字符串插值通常更容易阅读,所以你应该在大多数情况下更喜欢它.

  • `f""`宏总是能够发出比`s""更智能的代码.f ==快,s ==慢,显然.OP询问字符串构造,但是如果你正在写一个文件,你可能最好不要编写块.那个i/o可能超过你构建数据缓冲区的方式. (3认同)