【问题标题】:C# Basic Optimisation TechniquesC# 基本优化技术
【发布时间】:2013-09-13 23:30:13
【问题描述】:

我有两个关于加快代码速度的问题,以及某些事情究竟会减慢我的程序速度。

首先,方法参数。假设我有一个程序,它有一个名为 Account 的基类,然后我创建了该类 Account 的许多实例。在该类中,它有一个名为 Example 的方法,其中包含大量方法参数。这样做很慢吗?硬编码这些东西是否更快,如果有的话?示例:

public class Example
{
    public void DoSomething(string One, string Two, string Three, string Four, string Five, string Six, string Seven, string Eight, string Nine, string Ten, string Eleven)
    {
    // make a WebRequest using these parameters.
    }

}

其次,拥有一个内部只有一个成员的类是不是很糟糕,一个基类的实例,如 Example(上图)。例如:

static class ExampleOne
{
    public static Example example = new Example();
}

然后像这样使用它:

static void Main(string[] args)
{
   ExampleOne.example.DoSomething(parameters);
}

感谢您的帮助!

【问题讨论】:

  • 你可以传递参数的引用 - msdn.microsoft.com/en-us/library/0f66670z.aspx
  • 硬编码参数的速度几乎快,当然你无法分辨出任何区别,但这是一个错误的问题。您是否需要可配置性?所有的“它很慢吗?/多少?”问题的答案相同:衡量它。类成员示例看起来很糟糕。
  • 在性能方面,除非有 O(n) 与 O(1)(或类似的东西),否则主要是猜测哪个实际上更快和/或差异是如此之小以至于无关紧要.要获得实际结果,请配置代码。
  • 感谢大家的回答。我想差异是如此之小,我真的不需要担心。再次感谢。
  • @NSmeef 在 C# 中对 stringstring 的引用完全相同,并且仅通过引用传递内容会产生额外的间接性,从而使程序变慢..

标签: c# class optimization methods parameters


【解决方案1】:

关于你的第二个问题:

这取决于你想要完成什么,但我认为你应该使用静态方法或实现Singleton 设计模式。

【讨论】:

    【解决方案2】:
    // make a WebRequest using these parameters.
    

    您这样做从根本上是错误的。网络延迟确保此方法将花费数毫秒来执行。通过修改调用此方法的方式可以获得的任何收益(充其量在几纳秒测量)永远不会被观察到。

    你开始错了,你没有使用分析器来找到需要优化的内容。

    【讨论】:

    • 那么我使用代码的方式,以及类和方法,真的只会让我的程序慢几纳秒吗?
    • @user2764359:他就是这么说的。
    猜你喜欢
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    相关资源
    最近更新 更多