当前位置: 首页 > 编程语言 > C#

杀死代码速度的方法有很多?分享

时间:2023-04-10 15:41:09 C#

杀代码速度的方法有很多?我正在构建一个比它应该慢得多的应用程序(一个过程需要4秒,它应该只需要0.1秒,这至少是我的目标)。我有一堆方法将数组从一个传递到另一个。这使我的代码保持良好和有条理,但我担心它会降低我的代码的效率。任何人都可以确认是否是这种情况?此外,我的所有代码都包含在一个与我的UI分开的类中。与我将代码包含在Form1.cs文件中相比,这是否会使它的运行速度明显变慢?编辑:大约需要计算95000个点,每个点经过7种方法进行额外计算。您是否尝试过任何分析或性能工具来缩小减速发生的原因?它可能会向您展示可用于重构代码和提高性能的方法。其他用户提出的这个问题有几个选项供您选择:OK.NetProfilers不。这不会降低您的代码速度,除非许多方法意味着一百万或类似的东西。您可能有比您需要或意识到的更多的东西在您的阵列上迭代,并且阵列本身可能比您意识到的更大的内存占用。也许您应该研究一种设计,而不是将数组传递给7个方法,而是迭代数组一次并将成员传递给7个方法,这将最大限度地减少迭代95000个成员的次数。通常,函数调用足够基本,可以被任何解释器(或编译器)高度优化。所以这些在运行时不会爆炸很多。事实上,如果您将问题包装到一些奇特的迭代解决方案中,您可以节省对堆栈的处理,而不得不处理一些迭代变量,这并不难。我知道,一些程序员想知道为什么他们的递归算法如此缓慢,直到有人告诉他们不要按值传递数组条目。您应该提供一些示例代码。通常,您应该遇到其他瓶颈,或者找到其他算法。只需针对一个好的分析工具运行它。我有一些我希望只用4秒的东西-一次使用超过一亿条记录。数组是引用类型而不是值类型。所以你永远不会传递数组。您实际上是在传递一个指向内存中数组的指针。所以传递数组不是你的问题。您很可能遇到数组问题。你需要按照JamieKeeling所说的去做,并通过分析器运行它,或者甚至只是调试它,看看你是否陷入了某个大循环。为什么将它们全部加载到一个数组中并依次执行每个方法,而不是在加载时遍历它们?如果您可以(从任何输入源)处理它们并输出它们(无论是屏幕,还是将我们存档在任何地方),这将不可避免地使用更少的内存并至少减少启动时间。如果此答案适用于您的情况,请首先更改您的方法以处理枚举而不是数组(非破坏性更改,因为数组是枚举),然后更改您的输入方法以生成加载的返回项而不是加载整个数组。很抱歉发布旧链接(.NET1.1),但它包含在VS2010文章中,因此:您可以在此处阅读有关方法成本的信息。(初始链接)然后,如果您从VS启动代码(即使在发布模式下,无论如何),VS调试器将附加到您的代码并减慢速度。我知道,我会不赞成这个建议,但是......通过对数组进行不安全操作可以实现最大性能(是的,这是不安全的,但是当有性能权衡时,所以......)最后一步-重新构造你的使用尽可能少的方法处理数组的代码。它将提高性能。以上就是C#学习教程:杀代码速度的方法有很多?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: