【问题标题】:Assigning method result to variable将方法结果分配给变量
【发布时间】:2015-09-14 19:00:35
【问题描述】:

使用没有变量的方法结果是否与不使用相同的内存量?

例如,是这样的吗:

public int A()
{
    ...
    return a;
}
if(A() == 1)
...

仍将使用与以下相同数量的内存:

public int A()
{
    ...
    return a;
}

int a = A();
if(a == 1)
...

我知道差异相对较小,但如果我在不同的大字节数组上执行大量功能,我应该尝试这样做吗?

【问题讨论】:

  • 这里的 void 结果在哪里?你的方法返回一个int。
  • 函数被调用,返回一个值。一旦== 测试完成,该值将被简单地销毁/丢弃,因为它没有分配到任何地方。理想情况下,您只会使用“一半”的内存,例如该值保留在 cpu 寄存器中,而不是被复制到某处的内存中。
  • 别担心。编写它以便代码易于阅读,并让编译器优化这些微小的东西。如果结果证明这是一个可衡量的性能问题,请发布您编写的真实代码并寻求具体建议。
  • 你认为“void”是指“方法”吗?
  • 不,对不起大家。中午打错字了,伙计。

标签: c# variables object memory


【解决方案1】:

我假设你的意思是 if(A() == 1) 与:

var a = A();
if (a == 1)

答案很复杂,取决于优化设置、JIT 版本、位数和 CPU 架构。

对于原始类型,通常没有区别。如果这是一个大型结构,可能会有所不同,尤其是考虑到当前的 JIT 在优化结构方面很糟糕。

【讨论】:

    猜你喜欢
    • 2015-11-05
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多