gpt4 book ai didi

c# - 局部变量或类字段?

转载 作者:搜寻专家 更新时间:2023-10-30 21:02:23 33 4
gpt4 key购买 nike

我今天读了一篇 post about performance improvement在 C# 和 Java 中。

我仍然坚持这个:


19.不要过度使用实例变量

可以通过使用局部变量来提高性能。示例 1 中的代码将比示例 2 中的代码执行得更快。

示例 1:

public void loop() {
int j = 0;
for ( int i = 0; i<250000;i++){
j = j + 1;
}
}

示例 2:

int i;
public void loop() {
int j = 0;
for (i = 0; i<250000;i++){
j = j + 1;
}
}

事实上,我不明白为什么在每次调用 loop 函数时实例化一些内存并释放它应该更快,而我可以对一个字段进行简单的访问。

这纯粹是出于好奇,我并没有试图将变量“i”放入类的作用域中:p使用局部变量真的更快吗?或者可能只是在某些情况下?

最佳答案

  1. 堆栈比堆更快。

    void f()
    {
    int x = 123; // <- located in stack
    }

    int x; // <- located in heap
    void f()
    {
    x = 123
    }
  2. 不要忘记the principle of locality data .本地数据应该更好地缓存在 CPU 缓存中。如果数据接近,它们将完全加载到 CPU 缓存中,CPU 不必从内存中获取它们。

关于c# - 局部变量或类字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17703539/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com