2009-06-15 253 views
0

谁能更快?为什么?C#代码优化

1:

Point point = new Point(25,25); //any numbers.. 
Point point2 = new Point(20,95); //any numbers.. 

Graphics g = CreateGraphics(); 
g.DrawLine(point,point2); 

OR

2:

Graphics g = CreateGraphics(); 
g.DrawLine(new Point(25,25),new Point(20,95)); 
+2

sugest你使用基准System.Diagnostics.StopWatch。问题对于更广泛的受众没有价值或没有价值... – 2009-06-15 00:41:53

+1

我认为问题是有效的,不明白为什么downvotes! – 2009-06-15 00:41:55

+3

这个问题是有效的,但毫无意义。它最好是微型优化,最好是最好。 – Eric 2009-06-15 00:43:06

回答

4

都不是,存在除了在可读性(特别是JIT编译后)损失它们之间没有真正的区别。

0

2可能会更快,因为您没有在将对象传递给g.DrawLine之前创建对象的中间指针;然而,如果这是唯一使用point和point2的地方,那么编译器可能会进行优化,因此二进制文件无论如何都是一样的。

15

没有一个,因为这两个片段将编译为相同的MSIL代码表示。

此外,这是一个微型优化,你应该避免在实际知道是瓶颈之前应该避免的。

2

无论是速度更快,最快的将是避免了渲染路径完全分配这些点和precreates他们一个较早

0

这一切都取决于你在做什么。

如果你几乎没有别的事情(我怀疑),那么这就是“瓶颈”。

如果是这样的“瓶颈”,那么你仍然不知道什么是显性:

  • 两个“新” S和相关的构造函数,析构函数和垃圾收集。

  • 实际渲染线条。

第二个可能是不可避免的,但第一个只是出于风格的原因。

你可以通过配置文件或this simple method找到。

或者你可以避开与整个问题:

g.DrawLine(25,25,20,95);