C# 如何使我的代码快速

C# 如何使我的代码快速,c#,optimization,C#,Optimization,请任何人都可以给我一个好的教程,帮助我使我的代码快速和轻。 我想知道哪种方法更快,以及何时使用一种方法而不是其他… 如何评估代码是好是坏? 我的编程语言是C 大家好, 感谢您的回复,非常有帮助。 我编辑我的问题是为了更具体,特别是优化是无限的。 我想知道在每种情况下最好的方法是什么。 例如,如果我将行附加到字符串,则使用StringBuilder比使用字符串要好。。。 我只需要这些简单的东西。如果一种方法总是比另一种方法快,他们就不会费心把慢一点的方法包括进来 谈到性能,唯一不变的是您需要配置文

请任何人都可以给我一个好的教程,帮助我使我的代码快速和轻。 我想知道哪种方法更快,以及何时使用一种方法而不是其他…
如何评估代码是好是坏?
我的编程语言是C

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

如果一种方法总是比另一种方法快,他们就不会费心把慢一点的方法包括进来


谈到性能,唯一不变的是您需要配置文件。一切都是这样。

打字非常快

你应该看看,这篇文章介绍了c#开发中的最佳实践

注意次优化

即使一个特定的函数比另一个快,但这并不一定会对应用程序的运行时产生任何影响。您需要了解代码的哪些部分实际上是一个潜在的问题,并集中精力优化这些部分。请注意函数的类型,以及调用它们的频率。要确定需要优化的零件,探查器可以提供很好的帮助


有一些有趣的观点,关于为什么在实际需要优化之前不应该进行优化

基本上先实施,然后测试优化的位置


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

关于一般建议:

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

如果你给自己买了一个剖析器,它会帮助你前进,有些甚至会给你很好的提示

例如:

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

并且不要手动操作垃圾收集器(除非您真的知道自己在做什么)

这个链接太复杂了,不要对Java这个词太反感,你可以用他们教的任何语言进行开发

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


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

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

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

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

首先是为了正确,其次是为了清晰,然后才是性能

俗话说,

“没人在乎你计算错误答案的速度有多快”


(但在实际层面上,请使用探查器)

当然。我们的工作如下:

  • 决定旅程何时结束,开始旅程。设定有意义、以客户为中心、现实的绩效目标。(用于速度和资源消耗。)

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

  • 如果你正在实现你的绩效目标,不要担心绩效。一切都很好。担心bug、健壮性或特性

  • 如果未达到性能目标,请运行探查器。使用它来识别最严重的违规代码。只有修复最糟糕的代码才有意义;制造速度快、重量轻、速度快、重量轻的产品并不能解决性能问题

  • 重写慢代码,使其更具性能。(这是困难的一点。)确保你测试它,以确保它真的更好

  • 如果尽管你尽了最大的努力,你还是不能把它做好,要么重新评估你的目标是什么,要么取消这个项目,把你的时间花在你能成功的事情上


不断重复,直到你发货。

你可能需要更具体一些。一般的答案是:尽可能多地做,但不要超过这个。StringBuilder不能保证在连接小的时性能得到提升(我要补充:(1)去掉所有注释(2)将变量缩短为一个字母(3)删除不必要的空格,包括换行符(4)为不同目的重复使用变量…;-)我想补充一点。。。如果你打字不快。。使用语音到文本软件:P我无法想象一个程序员使用语音到文本软件来编码……但这难道不能帮助QA更快地发现您的bug吗?:)不是真的。例如,看看在C#中执行文件i/o的所有方法。为了向后兼容,旧方法随处可见,并且根据您想要达到的低级或高级程度,有不同的抽象层。问题链接被删除lol:(