Rac*_*hel 15 c# performance datetime
我刚看到这个赞成的评论
IIRC
DateTime.Today是一个相当昂贵的调用,因此您最好先将值存储在变量中.
这是对包含代码的帖子的回应:
var first =
new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).AddMonths(-1);
var last =
new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).AddDays(-1);
Run Code Online (Sandbox Code Playgroud)
如果我希望提高性能,那么存储DateTime.Today在变量中而不是多次调用它有多重要?大致有多少用途DateTime.Today可以证明为它创建一个变量?
编辑:我意识到我应该测试我的程序,看看是否存在性能问题,然后再担心像这样微不足道的事情.为了这个问题,假设我已经这样做并确定需要进行额外的优化.
将DateTime.Today存储在变量中有多重要
最好的答案是对您希望运行代码的硬件进行基准测试.除非你在一个非常严格的循环中调用它,否则我怀疑这将是一个问题.
将其存储在变量中的更好理由是,您可能会在两次调用之间从一天翻到下一天.
UPDATE
为了提供一个数量级,@ RichardBrown在他的回答中分享了一个链接,表明DateTime.Todayis 的成本被测试为几百纳秒(在用于该测试的特定硬件上).
基准测试(在我的机器上,使用秒表类):
10,000 DateTime.Today calls and assignment to local variable: 0.0125781 seconds.
10,000 Assignment only operations: 0.0001062 seconds.
Run Code Online (Sandbox Code Playgroud)
码:
var s = new Stopwatch();
DateTime date = DateTime.Today;
DateTime date2 = DateTime.Today;
s.Start();
for (int i=0; i<10000; i++)
date = DateTime.Today;
s.Stop();
Debug.Print(s.Elapsed.ToString());
s.Reset();
s.Start();
for (int i=0; i<10000; i++)
date2 = date;
s.Stop();
Debug.Print(s.Elapsed.ToString());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1200 次 |
| 最近记录: |