我对其他语言感到好奇,但为了规范,我会问C#。假设我有一个包含多个简单循环的程序:
for (int i = 0; i < 10; i++)
MessageBox.Show(i.ToString());
for (int i = 10; i < 20; i++)
MessageBox.Show(i.ToString());
for (int i = 20; i < 30; i++)
MessageBox.Show(i.ToString());
如果我选择让我成为一个全局变量:
int i;
for ( i = 0; i < 10; i++)
MessageBox.Show(i.ToString());
for ( i = 10; i < 20; i++)
MessageBox.Show(i.ToString());
for ( i = 20; i < 30; i++)
MessageBox.Show(i.ToString());
比另一个更快吗?一种方式消耗的内存多于另一种方式吗?
答案 0 :(得分:1)
表演之间没有任何明显的差异。
第二个程序比第一个程序快little
,但只记得一点。
让我告诉你为什么在第一个程序变量中我必须创建3个不同的时间,因为每次我只有一个块范围所以让我们假设在内存中创建变量i的时间是从记忆中摧毁它的时间是b。
现在在第一个程序中所花费的时间将是执行指令+ 3a + 3b的时间,因为变量i被加载3次并被破坏3次。
现在在第二个程序中所花费的时间将是执行指令+ a + b的时间,因为变量i被加载到内存中一次并在程序完成后被销毁。
a和b是非常小的值,除非您使用very very
处理速度慢{{1}}的机器,因此在性能方面没有明显的差异。
答案 1 :(得分:0)
当您声明变量时,您的计算机会为该变量保留一个内存空间。当没有方法调用它时,计算机将其检查为&#34;未使用&#34;并释放内存空间。显然这些操作占用了cpu时间,但是时间太短而你的cpu太快了,你甚至会注意到差异(除非你有一个10Hz的处理器:P) 因此,在理论上,第二个程序比第一个程序更快。