Android上でのGoogle Collections

まだほんの少ししか試していませんが、エラーなく動いています。

パフォーマンス考えると、使いどころには気を付けたいです。

パフォーマンス

ArrayList 生成時のパフォーマンス

TraceViewツールで計測してみました。
(1000回実行時の平均値です。数値は機種やバックグラウンドの動作で異なります。比率のみ参考になります)

Lists.newArrayList()
  • 0.162ms List<String> list=Lists.newArrayList(); 
  • 0.155ms ArrayList<String> list=Lists.newArrayList();
  • 0.133ms List<String> list=new ArrayList<String>();
  • 0.129ms ArrayList<String> list=new ArrayList<String>();
推奨されている、ArrayListの直接生成が一番速いですね。

Joinerを使って結合

String value=Joiner.on(",").join(values);
  • 3.408ms +を使った結合
  • 2.440ms Joinerを使った場合
  • 2.366ms 予めJoiner.onで生成
  • 1.384ms StringBuilderで結合
  • 1.182ms StringBuilderをsetLength(0)で使い回し
普段 + で文字列結合しても平気なら使ってもいいだろうが、なるべく避けた方が無難
頻繁に使うなら、StringBuilderで結合するstaticメソッドでも作成した方がいいかも。

    public static String joinOnConma(final String[] values){
     StringBuilder builder=new StringBuilder();
    
     for(int i=0;i<values.length;i++){
     builder.append(values[i]);
     if(i!=values.length-1){
     builder.append(",");
     }
     }
     return builder.toString();
    }



Comments