Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么是代码优化?_C#_Optimization - Fatal编程技术网

C# 什么是代码优化?

C# 什么是代码优化?,c#,optimization,C#,Optimization,当说这段代码需要一些优化,或者可以如何优化,这是什么意思?哪种代码需要优化?如何将优化应用于c#中的代码?这样做的好处是什么?例如,代码可能有一个重复的代码块,可以/应该放在一个方法中,您可能正在使用不推荐的方法/类,可能有更简单的方法来执行代码正在执行的操作,可能需要进行一些清理(例如,删除硬编码)等等。优化是一个非常宽泛的术语。一般来说,它意味着修改系统,使其某些方面更有效地工作,或使用更少的资源,或更健壮。例如,可以优化计算机程序,使其执行速度更快,或使用更少的内存或磁盘存储,或在UI方面

当说这段代码需要一些优化,或者可以如何优化,这是什么意思?哪种代码需要优化?如何将优化应用于c#中的代码?这样做的好处是什么?

例如,代码可能有一个重复的代码块,可以/应该放在一个方法中,您可能正在使用不推荐的方法/类,可能有更简单的方法来执行代码正在执行的操作,可能需要进行一些清理(例如,删除硬编码)等等。

优化是一个非常宽泛的术语。一般来说,它意味着修改系统,使其某些方面更有效地工作,或使用更少的资源,或更健壮。例如,可以优化计算机程序,使其执行速度更快,或使用更少的内存或磁盘存储,或在UI方面更具响应性

尽管“优化”与“优化”有着相同的根源,但优化的过程并不会产生一个完全优化的系统:总是有一个权衡,所以只有最感兴趣的属性才会得到优化

记住:

程序优化的第一条规则:不要这样做。程序优化的第二条规则(仅限专家!):先不要做。()


代码优化使代码运行更快。有两种主要方法可以做到这一点:

1) 将更多的工作压缩到更少的周期中。找出代码在哪里进行额外复制,或者在紧密循环中是否存在分支。这是在小范围内优化的

2) 使您的算法更好地扩展。你可能听说过“大O”符号。这使得算法在大数据集的情况下降级的速度大大降低

例如,如果你天真地在电话簿中搜索一个名字,你会从第1页开始阅读所有的名字,直到找到你要找的那个。这将需要根据电话簿中的姓名数量按比例调整多条指令。我们称之为O(n)。现在想想你是如何真正搜索电话簿的。你打开中间的某个地方,看看你要找的名字在哪一边。这称为二进制搜索,按名称数的对数进行缩放。我们称之为O(logn)。速度快得多

记住优化的第一条规则:首先测量。多年来,人们一直在优化运行不太频繁的代码。

是修改系统以使其某些方面更高效或使用更少资源的过程

在您的案例中,主要指两个级别:

设计级别

在最高级别上,可以优化设计以充分利用可用资源。这种设计的实现将受益于高效算法的良好选择,而这些算法的实现将受益于编写高质量的代码。系统的体系结构设计极大地影响其性能。算法的选择对效率的影响大于设计的任何其他项目。然而,在某些情况下,优化依赖于使用更高级的算法,利用特殊情况和特殊技巧,进行复杂的权衡;因此,一个完全优化的程序,如果没有足够的注释,有时对经验不足的程序员来说更难理解,因此可能比未优化的版本包含更多的错误

源代码级别

避免质量差的编码也可以通过避免明显的减速来提高性能。然而,在那之后,一些优化是可能的,这实际上降低了可维护性;现在,通过优化编译器可以执行其中的一部分,但不是全部。例如,通常需要使用更多的间接方法来简化或改进软件,但这种间接方法是有成本的


安东·戈戈列夫(Anton Gogolev)的回答是,当一段代码需要优化时,这是因为没有满足特定的性能要求。我们开发程序是为了满足用户的需求,对吗?大多数程序员倾向于主要考虑功能需求,即程序的功能,但用户也会有性能需求,提供功能的资源成本(网络带宽、CPU周期、内存、磁盘空间等)是多少。优化是更改一段代码以满足特定性能要求的过程。我想这应该发生在设计时,但有时您会编写一段代码,却发现它性能不佳。要优化代码,首先必须找出过度使用的资源。如果是CPU周期或内存,探查器可能会有所帮助。如果是网络带宽,这是当今非常常见的问题,那么您需要进行一些负载测试和通信分析


我的建议是,在编写代码之前,始终了解您当前和未来可能的性能需求,并在设计阶段进行优化。后期优化成本高、难度大,并且经常会失败或导致难看的代码。

优化有两个主要目的:

  • 让您的软件使用更少的资源,例如运行更快、更小、使用更少的RAM、运行和存储文档时更少的硬盘空间、更少的网络访问

  • 通过重构使软件更易于维护


只要没有出现相关问题,您就不需要进行优化:调试优化的代码比优化正确的代码要困难得多。

在进行代码优化时,您需要对代码进行度量,并尝试使其更高效。指标通常指的是稀缺资源

以下是常见的指标

  • 执行速度(通常是说优化时首先想到的)
  • 内存消耗
  • 可执行文件大小(在嵌入式系统上可能很重要)
  • 数据库访问
  • 远程服务访问(减少聊天、缓存等)
  • 简单易懂