当说这段代码需要一些优化,或者可以如何优化时,这是什么意思?哪种代码需要优化?如何对c#中的代码进行优化?这样做有什么好处呢?
发布于 2009-02-12 07:00:57
优化是一个非常宽泛的术语。一般来说,它意味着修改系统,使其某些方面更有效地工作,或者使用更少的资源,或者更健壮。例如,计算机程序可以被优化,使得它将执行得更快,或者使用更少的存储器或磁盘存储,或者在UI方面更具响应性。
尽管“优化”与“优化”有相同的词根,但优化过程并不会产生一个完全最优的系统:总是有一个权衡,所以只有最感兴趣的属性才会被优化。
记住:
程序优化的第一条规则:不要这样做。程序优化的第二条规则(仅限专家!):先别这么做。(Michael A. Jackson)
发布于 2009-02-12 07:27:55
Optimization是修改系统以使其某些方面更有效地工作或使用更少资源的过程。
在您的案例中,主要指两个级别:
设计级
在最高级别,可以对设计进行优化,以充分利用可用资源。这种设计的实现将受益于高效算法的良好选择,而这些算法的实现将受益于编写高质量的代码。系统的架构设计在很大程度上影响着它的性能。算法的选择对效率的影响比设计的任何其他项目都要大。然而,在某些情况下,优化依赖于使用更花哨的算法,利用特殊情况和特殊技巧,并执行复杂的权衡;因此,如果没有足够的注释,完全优化的程序有时会更难被经验较少的程序员理解,因此可能比未优化的版本包含更多的错误。
源代码级
避免质量差的编码也可以通过避免明显的速度减慢来提高性能。然而,在那之后,一些优化是可能的,这实际上降低了可维护性;现在可以通过优化编译器来执行一些优化,但不是所有优化。例如,通常需要使用更多的间接性来简化或改进软件,但这种间接性是有代价的。
发布于 2009-02-12 07:03:16
代码优化使代码运行得更快。有两种主要的方法可以做到这一点:
1)将更多的工作压缩到更少的周期中。找出代码在哪里做额外的复制,或者在紧凑的循环中是否有分支。这是在小范围内进行优化。
2)让你的算法具有更好的可扩展性。你可能听说过"Big O“符号。这使得算法在大数据集的情况下退化的速度要慢得多。
例如,如果你天真地在电话簿上搜索一个名字,你会从第一页开始,阅读所有的名字,直到找到你要找的那个。这将需要根据电话簿中的姓名数量进行缩放的多个指令。我们称之为O(n)。现在想一想你是如何真正搜索电话簿的。你打开中间的某个地方,看看你要找的名字在哪一边。这被称为二进制搜索,并根据名称数量的对数进行缩放。我们称之为O(logn)。这要快得多。
记住优化的第一条规则:先测量。很多人花了很多年的时间来优化那些并不经常运行的代码。
https://stackoverflow.com/questions/540305
复制相似问题