如何快速使我的代码

时间:2010-02-23 07:51:08

标签: c# optimization

任何人都可以指点我一个很好的教程,帮助我快速轻松地编写代码。 我有兴趣知道哪种方法更快,何时使用方法而不是其他方法...
以及如何评估代码是好还是坏? 我的编程语言是C#。

大家好,
感谢您的回复,他们非常有帮助 我正在编辑我的问题,更具体地说,优化是无限的 我想知道每种情况下最好的方法是什么 例如,如果我将字符串附加到字符串,则使用StringBuilder优于字符串... 我只需要这些简单的东西。

12 个答案:

答案 0 :(得分:18)

注意子优化。

即使一个特定的功能比另一个更快,但这不一定会对应用程序的运行时产生任何影响。您需要了解代码中哪些部分确实存在潜在问题,并专注于优化这些部分。请注意您的O notation函数,以及它们被调用的频率。为了识别需要优化的部件,分析器可以提供很好的帮助。

This question有一些有趣的观点,说明为什么在实际需要之前不应进行优化。

答案 1 :(得分:7)

不确定。这就是我们的工作:

  • 通过决定旅程结束的时间开始旅程。设定有意义,以客户为中心,切合实际的绩效目标。 (速度和资源消耗都有。)

  • 经常仔细测试您的代码,看看您是否达到了性能目标。

  • 如果您达到了效果目标,请不要担心性能问题。事情很好。担心错误,健壮性或功能。

  • 如果您未达到效果目标,请运行探查器。用它来识别最糟糕的违规代码。修复最差的代码才有意义;制作已经非常快速且亮度稍快且轻的东西并不能解决您的性能问题。

  • 重写慢速代码,使其性能更高。 (这很难。)确保你测试它以确保它真的更好。

  • 如果你尽了最大的努力,你就无法做到足够好,要么重新评估你的目标,要么取消项目,把时间花在你可以成功的事情上。

继续迭代,直到你发货。

答案 2 :(得分:5)

快速输入。

答案 3 :(得分:5)

首先实施,然后测试优化的位置。

如果您使用的是Visual Studio Profissional,则可以使用Analyze - >启动性能向导以分析方法性能。我不确定其他版本是否支持此功能,但是,还有一些商业/免费应用程序...寻找分析器(请参阅here获取列表)。

答案 4 :(得分:3)

您应该查看hidden features of c#,这篇文章介绍了c#development中最优秀的实践

答案 5 :(得分:3)

你可以得到很多关于此的建议。但请注意: 过早优化是万恶之源。

答案 6 :(得分:3)

首先瞄准正确性,然后瞄准清晰度,然后瞄准性能

俗话说,

“没有人关心你能以多快的速度计算错误答案”

(实际上,使用分析器)

答案 7 :(得分:2)

如果一种方法总是比另一种方法更快,那么它们就不会包括较慢的方法。

性能方面唯一不变的是你需要分析。一切都从此开始。

答案 8 :(得分:2)

如果你自己一个探查器,它会帮助你,有些甚至会给你很好的建议。

示例:ANTS Profiler

通常你会发现减少创建字符串的次数是你可以获得的主要性能提升。

那并且不要手动弄乱垃圾收集器(除非你真的知道你在做什么)

Java design patterns的这个链接过于复杂,不要因为Java这个词过于推迟,你可以使用他们用任何语言进行开发的教学。

问题是,如果你想知道何时做什么以及使用什么方法等等,设计模式就是你所说的。

我希望有人在我的职业生涯早期向我指出这一点。

答案 9 :(得分:1)

就一般建议而言:

  • 尝试使用最少的必要循环
  • 尽可能将代码移出循环
  • 避免在循环中复制内容(如字符串)
  • 避免在循环中创建对象
  • 在有保证的情况下缓存(通常需要花费大量时间制作的小对象),但要确保缓存有良好的处置策略,否则会导致内存泄漏

答案 10 :(得分:1)

您可以在纯模式下编译程序以提高运行时性能。

答案 11 :(得分:0)

自己解决这个问题的方法之一是使用一个控制台应用程序,在这个应用程序中,您可以尝试相互运行离散的代码并对它们进行计时。与here一样。