【发布时间】:2017-03-08 12:53:26
【问题描述】:
重复使用 DateTime.Today 会对性能产生负面影响吗?将值保存在变量中是否更有效?
我正在编写一些函数,它们将根据今天的日期计算新日期。为此,我相对经常使用 DateTime.Today。我想知道将值保存在变量中并在 DateTime.Today 上使用该变量是否更有效,还是没有区别?
public static DateTime GetFirstDateInThePast()
{
var calculatedYear = DateTime.Today.Year;
var calculatedMonth = DateTime.Today.Month < 7 ? 1 : 7;
var day = 1;
return new DateTime(calculatedYear, calculatedMonth, day);
}
对
public static DateTime GetFirstDateInThePast()
{
var today = DateTime.Today;
var calculatedYear = today.Year;
var calculatedMonth = today.Month < 7 ? 1 : 7;
var day = 1;
return new DateTime(calculatedYear, calculatedMonth, day);
}
【问题讨论】:
-
好吧,如果对内部实现没有任何想法,它当然会产生影响,但它根本无法衡量,你不应该太在意它。无论实际类型如何,读取属性肯定需要一些时间。
-
第二个选项更好。机会很低,但是如果 Day 跳到新的月份中间方法会怎样。您的数据会出现偏差
-
除了我之前提到的:性能影响应该是微不足道的。然而实际的问题是:这段代码是你想要的吗?为此,还要考虑 xanatos 的回答。
-
叹息,另一个重复的问题,即使我确实使用 Google 和 SO 内部搜索进行了搜索。这个较老的问题并没有令人遗憾地出现。我缺乏搜索技能吗?
标签: c# performance datetime