2016-12-16 51 views
-1

我只是想在一個大循環中將一個字符串中的佔位符設置爲一個正在運行的數字。爲方便起見,佔位符是%d。什麼是更快,使用String的.format或.replace方法?通過.format或.replace快速插入數字到字符串?

+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

所以我們ç假設.replace比String的格式化方法更快

+1

這是一些閱讀http://stackoverflow.com/questions/504103/how-do-i-write-a-correct-micro- benchmark-in-java – Kayaman

+0

@Kayaman謝謝!是我做基準測試的最佳時間,我會做的下一步:) – cralfaro

+0

我懷疑還有更快的選擇,找出格式字符串的位置,然後創建一個合適的'char []',然後替換相關的字符每一次。 –