2012-01-06 17 views
23

文字列連結の場合、concat()または連結演算子(+)のいずれかを使用できます。連結演算子(+)対concat()

私は次のパフォーマンステストを試したところ、concat()が文字列連結の方が高速でメモリ効率の良い方法であることがわかりました。 10万回ため

文字列連結の比較:

String str = null; 

//------------Using Concatenation operator------------- 
long time1 = System.currentTimeMillis(); 
long freeMemory1 = Runtime.getRuntime().freeMemory(); 

for(int i=0; i<100000; i++){ 
    str = "Hi"; 
    str = str+" Bye"; 
} 
long time2 = System.currentTimeMillis(); 
long freeMemory2 = Runtime.getRuntime().freeMemory(); 

long timetaken1 = time2-time1; 
long memoryTaken1 = freeMemory1 - freeMemory2; 
System.out.println("Concat operator :" + "Time taken =" + timetaken1 + 
        " Memory Consumed =" + memoryTaken1); 

//------------Using Concat method------------- 
long time3 = System.currentTimeMillis(); 
long freeMemory3 = Runtime.getRuntime().freeMemory(); 
for(int j=0; j<100000; j++){ 
    str = "Hi"; 
    str = str.concat(" Bye"); 
} 
long time4 = System.currentTimeMillis(); 
long freeMemory4 = Runtime.getRuntime().freeMemory(); 
long timetaken2 = time4-time3; 
long memoryTaken2 = freeMemory3 - freeMemory4; 
System.out.println("Concat method :" + "Time taken =" + timetaken2 + 
        " Memory Consumed =" + memoryTaken2); 

結果

Concat operator: Time taken = 31; Memory Consumed = 2259096 
Concat method : Time taken = 16; Memory Consumed = 299592 

我々は連結演算子(+)を使用する必要があるときconcat()は、オペレータよりも高速である場合には?

+1

読み取り:http://stackoverflow.com/questions/693597/is-there-a-difference-between-string-concat-and-the-operator-in-javaとhttp://stackoverflow.com/questions/47605/java-string-concatenation –

+0

唯一の違いは、追加する文字列の長さがゼロの場合、新しい文字列を作成するのではなく、元の文字列に戻る点です。 +演算子は少し高価かもしれません...あなたが何百、何千もの文字列構築操作を行っている場合、StringBuffer.append()を調べます。メソッドがStringBufferを構築し、最後にtheBuffer.toString()を返すか使用するのが一般的です。 –

+0

@PankajKumarまあ、あなたはおそらくStringBufferの代わりにStringBuilderを望むでしょう。 – ymajoros

答えて