android.support.v4.util.PoolsでStringBuilderをプールしても意味なし
これがちょっと気になっていて、たとえば new StringBuilder()
を数多く実行するケースでもしかしたら速くなるのでは?と思って試してみました。
10万回のStringBuilder
を生成して文字列連結などをしています。
StringBuilderPool/MainActivity.java at master · gfx/StringBuilderPool · GitHub
しかし結果は以下のとおり、4.2.2だと多少の効果はありますが、ARTだと逆に遅くなります。今後はARTが増えていくので、StringBuilder
程度だと気にする必要はありません。そういうわけで、「もしかしたらここはPoolsで速くなるかも…」などと心配せず、安心して使うたびに new StringBuilder()
したり文字列リテラルとの連結をしてください。
// MainActivity.java 内のメモ // on Xperia A (Android 4.2.2) // D/XXX: SimplePool: 294ms // D/XXX: SynchronizedPool: 341ms // D/XXX: No pool: 382ms // // on Xperia Z4 (Android 5.0.2) // D/XXX: SimplePool: 152ms // D/XXX: SynchronizedPool: 153m // D/XXX: No pool: 116ms