2017-10-16 163 views
-3

嗨,我是新的編程,我得到這個代碼:兩種方法,做同樣的事情,用不同的方式

public void Print(out string dataToPrint) 
{ 
    //code.... 
    dataToPrint = "some text here" 
} 

和:

public string dataToPrint() 
{ 
    //code 
    return "some text here" 
} 

哪一個將在今天使用,以及專業程序員將使用哪個示例以及性能最快的示例?

+2

如果你有兩匹馬,你想知道哪個最快,那麼你應該**他們**。不要要求我們爲你猜測或解決問題。 – Enigmativity

+0

性能差異,如果有的話,應該是如此之小,你永遠不會注意到它,除非在非常嚴格的循環中運行你的代碼。 –

+6

我應該更關心可讀性而不是性能,除非你有一個**測量**性能問題,並且「out」是你可以在那裏優化的唯一東西(在幾乎所有其他事情之後...)。簡而言之:是的,可能會出現TINY(微米納米)性能損失,但是這個數字很小,幾乎沒有什麼收穫。爲清晰起見,在需要時優化性能。 –

回答

-1

在性能方面幾乎沒有區別,您可以通過運行循環中的每個方法並測試每個可以採用的時間來嘗試它,或者使用benchmark.net

我使用Benchmark.net下面的代碼試了一下:

public class Class1 
{ 
    public void Print(out string dataToPrint) 
    { 
     dataToPrint = "some text here"; 
    } 

    public string Print() 
    { 
     return "some text here"; 
    } 

    [Benchmark] 
    public void one() 
    { 
     string data; 
     Print(out data); 
    } 

    [Benchmark] 
    public void two() 
    { 
     Print(); 
    } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     var summary = BenchmarkRunner.Run<Class1>(); 
    } 
} 

,結果是: result of benchmark 正如你所看到的差別太小,所以你不應該考慮你的情況,但我更喜歡第二種形式的可讀性,但是,對於其他情況,請嘗試使用相同的過程並查找。

+1

你怎麼知道幾乎沒有區別? JIT將進行必要的優化(以及這意味着什麼)? – Enigmativity

+0

感謝您的反饋 –

+0

不,真的,這個網站是不是發佈意見件時,可以生產的硬事實。你怎麼能證明你的答案? – Enigmativity

相關問題