20

标题几乎是不言自明的,我正在为这种简单性而自杀。

这里,但它没有多大帮助。

4

7 回答 7

28

我认为Stopwatch类是您正在寻找的。

于 2009-10-11T20:56:38.380 回答
13

如果您希望在 GNU/Linux 和 Windows(至少七种)下的不同进程、不同语言(Java、C、C#)之间比较时间戳:

爪哇:

java.lang.System.nanoTime();

C GNU/Linux:

static int64_t hpms_nano() {
   struct timespec t;
   clock_gettime( CLOCK_MONOTONIC, &t );
   int64_t nano = t.tv_sec;
   nano *= 1000;
   nano *= 1000;
   nano *= 1000;
   nano += t.tv_nsec;
   return nano;
}

C 窗口:

static int64_t hpms_nano() {
   static LARGE_INTEGER ticksPerSecond;
   if( ticksPerSecond.QuadPart == 0 ) {
      QueryPerformanceFrequency( &ticksPerSecond );
   }
   LARGE_INTEGER ticks;
   QueryPerformanceCounter( &ticks );
   uint64_t nano = ( 1000*1000*10UL * ticks.QuadPart ) / ticksPerSecond.QuadPart;
   nano *= 100UL;
   return nano;
}

C#:

private static long nanoTime() {
   long nano = 10000L * Stopwatch.GetTimestamp();
   nano /= TimeSpan.TicksPerMillisecond;
   nano *= 100L;
   return nano;
}
于 2017-05-23T13:40:25.523 回答
1

DateTime.Now将以毫秒为单位为您提供当前时间,但精确到纳秒的时间是相当不切实际的,至少在 Windows 中是这样。

于 2009-10-11T20:57:01.327 回答
1

我能找到的最接近的是 DateTime.ToFileTime() 方法。您可以像这样在 DateTime 的实例上调用它:

long starttime = DateTime.Now.ToFileTime()

该方法返回一个 Windows 文件时间:

Windows 文件时间是一个 64 位值,表示自 1601 年 1 月 1 日 (CE) 协调世界时 (UTC) 午夜 12:00 以来经过的 100 纳秒间隔数。

您至少可以将时间间隔缩短到 100 ns。

来源:http : //msdn.microsoft.com/en-us/library/system.datetime.tofiletime.aspx

于 2009-10-11T21:06:24.023 回答
1

DateTime.Now.Ticks

我试图找到答案来运行一些性能测试。

DateTime startTime = DateTime.Now;
generatorEntity.PopulateValueList();
TimeSpan elapsedTime = DateTime.Now - startTime;
Console.WriteLine("Completed! time(ticks) - " + elapsedTime.Ticks);
于 2014-11-22T22:38:54.637 回答
0

如果您以纳秒为单位计时,我认为您将达到操作系统的硬性限制。这是一篇关于该主题的好文章:

http://www.lochan.org/2005/keith-cl/useful/win32time.html

虽然 Windows 很乐意返回 100 纳秒的精度,但时钟只能保证每 15.6 毫秒左右更新一次。因此,Windows 有效地将这些更新发生的时间返回到 100 纳秒的精度。为了比这更准确,您可能需要准备编写 C 或汇编程序并运行和嵌入式操作系统。

于 2009-10-11T22:15:46.120 回答
0

http://msdn.microsoft.com/de-de/library/system.datetime.ticks.aspx

类似:DateTime.Ticks

于 2011-05-18T10:47:22.980 回答