【发布时间】:2011-11-15 08:49:21
【问题描述】:
在 C# 中似乎有很多方法可以计算时间跨度。我想知道哪个是最快的,我只是说需要最少的处理量。让我举一个例子来说明我想要做什么。
private const int timeBetweenEvents = 250; //delay ms
DateTime nextUpdate = DateTime.Now.Add(new TimeSpan(0, 0, 0, timeBetweenEvents));
...
while(true)
{
if (DateTime.Now > nextUpdate)
{
// do something
nextUpdate = DateTime.Now.Add(new TimeSpan(0, 0, 0, timeBetweenEvents));
}
// ...
// do some other stuff
// ...
}
另一种选择...
private const int timeBetweenEvents = 250; //delay ms
TimeSpan nextUpdate = DateTime.Now.TimeOfDay.Add(new TimeSpan(0,0,0,timeBetweenEvents));
...
while(true)
{
if (DateTime.Now.TimeOfDay > nextUpdate)
{
// do something
nextUpdate = DateTime.Now.TimeOfDay.Add(new TimeSpan(0, 0, 0, timeBetweenEvents));
}
// ...
// do some other stuff
// ...
}
通过使用 System.Environment.TickCount 进行减法,我也看到了类似的情况。那么最好的方法是什么?
【问题讨论】:
-
你想用这个时间戳做什么?看起来你只需要 Timer
-
最适合什么?可读性?准确性?表现?还有什么?
-
@Oded,既然标题是最快的,我会假设性能。
-
您的第二个代码 sn-p 甚至无法编译...您应该在性能之前专注于正确性。你有多确定最简单的代码对你来说性能不够好? (为了清楚起见,我还鼓励您使用
TimeSpan.FromMilliseconds等。) -
如果您进行少量计算,我认为您选择哪种方法是任意的。如果你做了大量的工作,那么它只会受到你选择的方法的影响。
标签: c# performance time timespan