C#学习教程:直接返回一个值或创建一个临时变量的性能差异功能是否有任何性能损失或内存消耗差异?例如,这些函数中的哪一个(GetValue)执行得更好、节省内存或两者完全相同:情况1:privatestringGetValue(){returnthis.GetResult();}privatestringGetResult(){//此处的代码返回一个大字符串...}案例2:privatestringGetValue(){stringresult=this.GetResult();返回结果;}privatestringGetResult(){//此处返回一个大字符串的代码...}谢谢。在这些基本情况下,可读性总是胜过性能差异。我认为这是一个微优化,这些在很大程度上是浪费时间。您的储蓄将被不确定的GC运行耗尽。如果允许编译器对其进行优化,大多数时候生成的代码不会有差异。在这种情况下生成的IL似乎有一些额外的操作码来引用堆栈上的字符串,但是JIT然后用它做什么是任何人的猜测。我有时会进入临时变量以在返回前检查它们,但我从不担心性能影响。最重要的是,我从未见过需要这种改进来解决性能问题的情况。如果这个局部变量实际上是被可执行代码使用的,没有选择,那么差别还是很小的。局部变量仅使用存储引用所需的堆栈空间,并且为其分配空间根本不需要时间,因为始终分配堆栈帧。从局部变量进行额外复制的时间几乎无法测量。如果您在紧密循环中调用该方法数百万次,它只会有所不同,并且与分配字符串所花费的时间相比,它仍然只是执行时间的一小部分。以上就是C#学习教程的全部内容:直接返回值和创建临时变量的性能差异。代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
