什么相当于.NET中的System.nanoTime()?

2022-09-02 08:58:55

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

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


答案 1

我认为秒表类就是你正在寻找的。


答案 2

如果你想在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;
}

推荐