2017-10-16 135 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

相关问题