在javajni调用中设置Long

在javajni调用中设置Long,java,java-native-interface,Java,Java Native Interface,我想从linux返回微秒,因为java在具有单调时钟的系统上的挂钟时间精度只有毫秒 我对jni的接触是有限的,所以如果这是一个愚蠢的问题,我道歉 我相信我可以在c层中调用gettimeofday并返回jlong值: private native long getMicros(); 或者,也可以使用指向地址的指针,然后将值写入此地址: private native void getMicros(Long ptr); 后者在我的脑海中提出了很多问题,比如“c如何知道jlong的二进制格式是什么”

我想从linux返回微秒,因为java在具有单调时钟的系统上的挂钟时间精度只有毫秒

我对jni的接触是有限的,所以如果这是一个愚蠢的问题,我道歉

我相信我可以在c层中调用gettimeofday并返回jlong值:

private native long getMicros();
或者,也可以使用指向地址的指针,然后将值写入此地址:

private native void getMicros(Long ptr);
后者在我的脑海中提出了很多问题,比如“c如何知道jlong的二进制格式是什么”和“我该怎么做!”

我只是想知道后者是否会比跨jni层返回值更快

欢迎有任何想法。

'返回最精确的可用系统计时器的当前值,以纳秒为单位。 此方法只能用于测量经过的时间,与任何其他系统或挂钟时间概念无关。返回的值表示纳秒,因为某个固定但任意的时间(可能在将来,因此值可能为负数)。此方法提供纳秒精度,但不一定是纳秒精度。无法保证值的更改频率。由于数值溢出,连续调用中跨度大于约292年(263纳秒)的差异将无法准确计算经过的时间

例如,要测量某些代码执行所需的时间:

   long startTime = System.nanoTime();
   // ... the code being measured ...
   long estimatedTime = System.nanoTime() - startTime;