与直接返回分配给该变量的值相比,在函数中创建临时变量是否存在性能损失或内存消耗差异?
例如,这些函数(GetValue)中的哪一个在性能和节省内存方面更好或两者完全相同:
案例一:
private string GetValue()
{
return this.GetResult();
}
private string GetResult()
{
// Code here that return a big string...
}
案例 2:
private string GetValue()
{
string result = this.GetResult();
return result;
}
private string GetResult()
{
// Code here that return a big string...
}
谢谢。
最佳答案
在这些基本情况下,可读性总是胜过性能差异。我认为这充其量只是一个微优化,而这些在很大程度上被证明是浪费时间。您在此节省的内容将被不确定的 GC 运行吃掉。
如果允许编译器对其进行优化,大多数情况下生成的代码不会有任何差异。在这种情况下,生成的 IL 似乎有一些额外的操作码用于引用堆栈上的字符串,但 JIT 对此的作用是任何人的猜测。
我有时会分解为临时变量以在返回之前对其进行检查,但我从不担心性能影响。最重要的是,我从未见过需要这种改进来解决性能问题的案例。
关于c# - 直接返回值或创建临时变量之间的性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11798033/