【发布时间】:2016-06-25 09:58:15
【问题描述】:
如何更好地实现优化目标?
public SpeedGraphModel SpeedGraphModel
{
get { return _speedGraphModel; }
set {
if (_speedGraphModel == value)
return;
_speedGraphModel = value;
}
}
或
public SpeedGraphModel SpeedGraphModel
{
get { return _speedGraphModel; }
set { _speedGraphModel = value; }
}
我认为string 类型不检查会更好,但对于其他类型?
【问题讨论】:
-
您真的认为这对性能有什么影响吗?
-
你确定你不是premature optimization的受害者吗?
-
你为什么想要这样的代码?这破坏了可读性。你可以做
public SpeedGraphModel SpeedGraphModel { get; set; }。这不太可能对现代硬件的性能产生影响。 -
除非你真的很了解底层的实现细节(我怀疑你不是),否则这是初学者会犯的错误。我去过那里,我从中吸取了教训,永远不要担心它。我不知道如何说服你,但你应该总是分配它(你的第二种方法)。一年后,当你看到这个问题时,你会觉得自己很愚蠢。
-
如果
SpeedGraphModel是 500 字节的结构,那么可能是最罕见的情况,那么是的,复制会产生明显的惩罚,但是首先要做的就是大的结构是错误的,而且有条件的检查如此大的结构很可能会涉及耗时的相等操作,这无论如何都会否定不复制的优势。与往常一样,如果这一切都让您担心,请重新考虑设计,如果您认为您的设计是合理的,请自行测量。