2016-12-16 5 views
-1

文字列内のプレースホルダを大きなループ内の実行中の番号に設定したいだけです。便宜上、プレースホルダーは%dです。文字列の.formatまたは.replaceメソッドを使用すると、より高速です。番号を.formatまたは.replaceで素早くStringに挿入しますか?

+0

両方を試しましたか?あなたの結果は何でしたか?数字を固定桁数にフォーマットすることは可能ですか? (もしそうなら、再利用のためにchar配列を作成すると助けになるかもしれません...)基本的にはここで十分な情報をまだ提供していません。これまでに行ったことを具体的なパフォーマンス要件とともに示す[mcve]が本当に助けになります。 –

+0

@JonSkeet私は多くのコーディングに集中していましたが、この質問を部屋に投げるだけでしたが。私はガイドラインを忘れて申し訳ありません、本当に私の質問を考える必要があります... – GreenThor

答えて

1

私が応答を知りませんでしたが、私は非常に簡単なテストをしたことについて興味があったと評価指標を追加し、それらが結果であるとして:

コード:

@Test 
public void test(){ 
    String original = "This is the phrase %d"; 
    long init = System.currentTimeMillis(); 
    for(int i = 0; i < 100000; i++){ 
     System.out.println(String.format(original, i)); 
    } 
    long end = System.currentTimeMillis(); 

    long init1 = System.currentTimeMillis(); 
    for(int i = 0; i < 100000; i++){ 
     System.out.println(original.replace("%d", String.valueOf(i))); 
    } 
    long end2 = System.currentTimeMillis(); 
    System.out.println("Method 1: " + (end-init)); 
    System.out.println("Method 2: " + (end2-init1)); 
} 

結果

方法1:1950方法2:1361

だから我々は、cは.replaceはStringのフォーマットメソッドより高速です。

+1

ここにいくつかの読書http://stackoverflow.com/questions/504103/how-do-i-write-a-correct-micro-ベンチマーク・イン・ジャック – Kayaman

+0

@Kayamanありがとう! – cralfaro

+0

私は、フォーマット文字列がどこにあるかを調べて、適切な 'char []'を作成し、関連する文字を置き換えるだけではるかに高速なオプションがあると思われます毎回。 –

関連する問題