想请问不同string串接方法的效能比较。
我写了以下的方式(请详下图)来测试各种写法的效能(耗时),
目前从结果来看是A循环优于B优于C优于D(但秒数会浮动,不知是否有更好的测试方法?
)
我已经知道各循环差异大概如下:
A循环因为是常量会在compile时就处理,故runtime时不用再做处理。
C循环因为用StringBuffer串接时不会再new物件故效能优于D循环。
D循环因为string是immutable object,因此在a=a+b时会修改a在内存中的位置,故比C
循环耗效能。
但应该如何看B循环呢?
a+b没有指定给任何field,那系统是否会在内存中分配一个新的位置给(a+b)?如同new
一个物件一样会耗效能。
另外是否有方法可以测试或判断是否有在内存中分配新位置?
再麻烦,谢谢
https://i.imgur.com/XgTiMTk.jpg