所以我可以说,在编写应用程序时,我们应该专注于完成功能,而不考虑性能问题,直到我们无法承受低性能?
我担心如果我多次使用错误的模式会降低应用程序的速度,那么修复问题可能会花费相当多的时间。我应该在广泛使用之前测试模式的性能吗?
我提到的模式可能指的是使用Linq或for-loop,使用Delegate.BeginInvoke
,Parallel.For
或Task<T>
,处置IDisposable
或忽略它等等。
任何参考材料都欢迎。
答案 0 :(得分:2)
我同意Knuth关于过早优化的引用的精神,因为它可能导致代码在开发过早变得过于复杂和笨拙,影响代码的质量和完成项目所需的时间。
我对你的帖子有两个担忧:
您应该了解您的功能/算法是否可以在理论上扩展/执行或不符合您的要求(例如解决方案的O复杂性 - &gt; http://en.wikipedia.org/wiki/Analysis_of_algorithms)
您提到的模式实际上是具体的实现项目,其中只有一些与性能有关,例如
答案 1 :(得分:1)
不要在不考虑性能的情况下编码
在代码变得更复杂(例如并行)之前的性能代码
但是使用C#5.0,即使并行也不复杂
如果您有一些电话,您认为可能需要优化然后进行设计。
设计代码,以便优化不会改变方法的接口。
有速度,内存,并发(如果是服务器应用程序),可靠性,安全性和支持 清洁代码通常是最好的代码。
在你知道自己遇到性能问题但不要草率之前不要发疯。
在回答关于SO的另一个问题时,我告诉那个人他们不需要DataTable,DataReader会更快,内存更少。他们的反应是它仍然在1/2秒内运行我不在乎。对我来说这是邋code的代码。
@JonhSanders我不同意“在代码变得更复杂之前执行代码”将导致错误或不完整。对我来说,性能编码与优化不同。首先传递任何东西,但扔掉代码我代码的性能 - 没有异国情调只是最佳实践。在那里,我看到了潜在的热点,我可能需要回来并优化,我会考虑优化。附:我同意结束这个问题。