我对效率有点迷恋,但我从来没有找到这个问题的明确答案。其中一个比另一个更有效/更好,如果是这样,为什么?
非静态函数中使用的静态类变量:
public class Example {
private static int index;
private void Test() {
index = 0;
}
}
在函数内声明的变量:
public class Example {
private void Test() {
int index = 0;
}
}
index
变量仅由Test()
函数使用。
运行时速度比内存使用更重要。如果答案因语言而异,那我就特别询问C#。
提前谢谢: - )
答案 0 :(得分:1)
我认为性能不会有任何区别,除了您将为垃圾收集器增加一些额外负担之外,因为您将在实例变量中分配更多的内存。
如果您想进行多线程处理并且性能很重要,请使用实例变量而不是静态变量。
您确实对我的兴趣达到了顶峰,所以我编写了一个简单的程序来进行测试。一百万个静态和实例变量分配的结果花费了3ms。我在同一运行时运行了5次测试,以下是
静态测试耗时3毫秒。 实例测试耗时3毫秒。 静态测试耗时3毫秒。 实例测试耗时3毫秒。 静态测试耗时3毫秒。 实例测试耗时3毫秒。 静态测试耗时3毫秒。 实例测试耗时3毫秒。 静态测试耗时3毫秒。 实例测试耗时3毫秒。
我已将代码上传到我的github repository,特别是Program.cs file
答案 1 :(得分:0)
基本上没有关于执行时间或内存消耗速度增加的论文,就像你比较苹果和橘子,它们是不同的,但两者都是结果。
你的两个例子之间的唯一区别是static关键字,它避免了实例化的需要,但是,这不会影响性能或优化代码
您唯一能做到的就是修改访问index
变量的方式