.NET最佳编码实践,以实现编译器的最佳性能?

时间:2010-01-14 11:13:17

标签: c# .net asp.net

大部分时间在编码过程中,我发现我是否可以用更少的行编写代码。

我不知道什么时候我们在c#中用少量的行写一些登录然后我们是否达到了良好的性能? dotnet编译器是否更快地编译代码?

是否有任何教程/书籍/指南的来源,以便我们在编写代码之前制作清单。

8 个答案:

答案 0 :(得分:11)

我们应该考虑的是编写其他人可以理解的更好的代码,声明更好的变量名称,维护结构和设计。

当然,我们可以用3行代码编写一个登录名。这是否意味着编译器可以更快地编译/运行它?好吧,我们应该记住,现在的编译器非常聪明。编写少量代码行并不能证明我们很聪明。而且编译器编译速度也没有意义。

编译器很好地将代码优化为字节码,因此我们应该考虑编写考虑设计和原则的代码,当然人类可以将代码理解为自编代码。

这里我引用 Martin Fowler 所说的话:

  

任何傻瓜都可以编写一个代码   电脑可以理解。好   程序员编写人类可以编写的代码   理解。

希望这有帮助!

关心,
穆奈姆

答案 1 :(得分:4)

老实说,我认为大多数人更喜欢可读和可维护的代码而不是编码速度快半秒的代码。

如果您遇到解决方案需要几分钟编译的情况,那么您显然需要处理大量代码,并且它的可读性变得更加重要。

编辑以添加

根据对OP的一些评论,如果你遵循XKCD's advice:

,工作可能会为你带来更快的CPU和SSD

'Are you stealing those LCDs?' 'Yeah, but I'm doing it while my code compiles.'

答案 2 :(得分:4)

不,用像C#这样的高级语言用较少的代码编写代码几乎不会对性能产生任何重大影响。无论如何,编译器都旨在优化这些东西。

编写最佳性能的关键是首先使代码可维护和自然。通常情况下,编译器会优化这一功能,因为编译器可以识别这些正常结构并以最佳方式对其进行优化。

尽可能避免严重嵌套的循环。当循环开始之前可以完成一次时,不要在循环中多次工作。当1执行此任务时,避免进行多个数据库或网络调用。

在代码完成后对代码进行性能测试并寻找瓶颈。然后花时间回顾这个瓶颈,看看你是否可以优化它。这将为您提供最佳的性能提升。不要在项目早期浪费时间试图优化小事情,直到你知道它们对性能有很大影响。

您最大的性能点击可能是文件访问,数据库访问,Web服务访问。您刚才在代码中执行的操作可能不会产生巨大的性能损失。

答案 3 :(得分:2)

“少行”?这不是那么相关。计算第n个Fibonacci数可以以指数复杂度递归地实现,或者通过在对数时间中使用矩阵乘法,具有更多行代码。 Kolmogorov complexity并不总是被最小化。

查看规则:避免不必要的装箱,如:

int x=3; Console.WriteLine("x ={0}", x); //wrong; but: Console.WriteLine("x ={0}", x.ToString());

我一直认为这本书Effective C#: 50 Specific Ways to Improve Your C#是一本好书,向您展示如何用C#编写更好的代码;例如,它解释了为什么你应该使用foreach而不是迭代集合时。

答案 4 :(得分:1)

如果你问的是,编译代码的行数是否比编译更多行代码要快,答案是,这取决于。

你可能有300行编译速度远远超过50行。

答案 5 :(得分:1)

你要了一本书或文章。 .NET最佳实践的最佳书之一是

本书由.NET开发团队的成员自己编写。

答案 6 :(得分:0)

请参阅本书参考“提高.NET应用程序性能和可伸缩性”:http://msdn.microsoft.com/en-us/library/ff649152.aspx

这是一个非常好的教程,涵盖了.NET应用程序的大部分内容

答案 7 :(得分:0)

虽然不是特定于ASP.NET,但我强烈推荐Steven Sartain在SubMain上提供的免费C#/ VB.NET编码指南。我不认为它将涵盖有关如何编写快速编译的代码的任何内容,但我不完全确定为什么它会在您关注列表的顶部附近。只是担心编写好的代码。

http://submain.com/products/guidelines.aspx