静态类变量与函数变量。一个更有效率?

时间:2018-03-26 15:51:31

标签: c# performance processing-efficiency coding-efficiency

我对效率有点迷恋,但我从来没有找到这个问题的明确答案。其中一个比另一个更有效/更好,如果是这样,为什么?

非静态函数中使用的静态类变量:

public class Example {
    private static int index;

    private void Test() {
        index = 0;
    }
}

在函数内声明的变量:

public class Example {
    private void Test() {
        int index = 0;
    }
}

index变量仅由Test()函数使用。

运行时速度比内存使用更重要。如果答案因语言而异,那我就特别询问C#。

提前谢谢: - )

2 个答案:

答案 0 :(得分:1)

我认为性能不会有任何区别,除了您将为垃圾收集器增加一些额外负担之外,因为您将在实例变量中分配更多的内存。

如果您想进行多线程处理并且性能很重要,请使用实例变量而不是静态变量。

您确实对我的兴趣达到了顶峰,所以我编写了一个简单的程序来进行测试。一百万个静态和实例变量分配的结果花费了3ms。我在同一运行时运行了5次测试,以下是

静态测试耗时3毫秒。 实例测试耗时3毫秒。 静态测试耗时3毫秒。 实例测试耗时3毫秒。 静态测试耗时3毫秒。 实例测试耗时3毫秒。 静态测试耗时3毫秒。 实例测试耗时3毫秒。 静态测试耗时3毫秒。 实例测试耗时3毫秒。

我已将代码上传到我的github repository,特别是Program.cs file

答案 1 :(得分:0)

基本上没有关于执行时间或内存消耗速度增加的论文,就像你比较苹果和橘子,它们是不同的,但两者都是结果。

你的两个例子之间的唯一区别是static关键字,它避免了实例化的需要,但是,这不会影响性能或优化代码

您唯一能做到的就是修改访问index变量的方式