那么这是一种整体“更好的表现”方法呢?
JAVA的C#的System.currentTimeMillis()方法:
public static double GetCurrentMilliseconds()
{
DateTime staticDate = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
TimeSpan timeSpan = DateTime.UtcNow - staticDate;
return timeSpan.TotalMilliseconds;
}
正在使用System.currentTimeMillis():
public void Run()
{
this.lastUpdate = TimeUtilities.GetCurrentMilliseconds();
while (isRunning)
{
if (TimeUtilities.GetCurrentMilliseconds() - lastUpdate >= 600)
{
lastUpdate = TimeUtilities.GetCurrentMilliseconds();
// bla bla bla...
}
try
{
Thread.Sleep(100);
}
catch (Exception ex)
{
Jolt.GetLog().WriteException(ex);
}
}
}
和C#的Environment.TickCount:
private void Run()
{
double lastUpdate = Environment.TickCount;
while (isRunning)
{
if (lastUpdate + 600 < Environment.TickCount)
{
lastUpdate = Environment.TickCount;
// bla bla bla...
}
try
{
Thread.Sleep(100);
}
catch (Exception ex)
{
Jolt.GetLog().WriteException(ex);
}
}
}
任何帮助将不胜感激。否则,如果这是一个坏主意,请你提供一个更好的方法来做到这一点。
答案 0 :(得分:2)
使用TickCount方法具有更好的性能,原因如下:
在性能方面,您不应该使用double类型。要测量100秒的跨度,int应该足够了。请注意,TickCount在24天后从正数转为负数,因此如果您使用double,则使用TickCount将不再适用于该时间;如果使用int,则应将其写为
if (Environment.TickCount-lastUpdate > 600)
答案 1 :(得分:0)
TickCount肯定有更好的表现。
此用例中不需要计算当前时间的开销。你只关心经过的时间,所以如果纪元是1970年或过程的开始,它就没有区别。