【发布时间】:2014-08-15 09:37:17
【问题描述】:
举一个(人为的)例子
private bool CheckSomeThings()
{
var importantThing = GetImportantThing();
var generatedOtherThing = DoFunkyStuff(importantThing);
bool firstCheck = CheckThing(importantThing);
bool otherCheck = IsItStuff(generatedOtherThing);
bool furtherStuff = FurtherChecking(importantThing, generatedOtherThing);
return firstCheck && otherCheck && furtherStuff;
}
在编写/审查这样的代码时,我倾向于建议不要创建 bool 只是为了将其用作检查,所以我更喜欢
private bool CheckSomeThings()
{
var importantThing = GetImportantThing();
var generatedOtherThing = DoFunkyStuff(importantThing);
return CheckThing(importantThing)
&& IsItStuff(generatedOtherThing)
&& FurtherChecking(importantThing, generatedOtherThing);
}
我发现第二个示例更具可读性,因为我不必解析创建的变量并检查它们是否在任何地方使用......但我承认这是主观的。
但是,我认为第一个示例(带有附加分配)比第二个示例使用更多的内存。所以轻松取胜。
虽然过早优化类似于打小狗,但导致此问题的实际代码将作为实时处理小技巧的一部分运行,因此优化内存使用可能是一个真正的问题。
我想知道我对分配导致的内存使用是否正确?
另外,是的,我们将通过内存分析器等运行系统以获取有关它如何执行的真实数据。这是一个简单的代码风格方法是否可以防止不必要的内存使用的问题。
【问题讨论】:
-
代码不一样,你必须使用
&而不是&&。微优化的常见问题是,它们倾向于在提高速度之前添加错误。 -
@HansPassant 为什么?如果你能指出我(或添加一个)好的解释,那就太棒了:)
标签: c#-4.0 memory optimization