我试图在JNI调用中测量时间,它从本地调用到Java。
在C代码中,我使用"GetTickCount" api获取JNI执行时间,在Java中使用"System.nanoTime"。
示例:
long start = GetTickCount();
....//CallStaticMethod exampleMethod...
long end = GetTickCount();
long duration = end - start;
在Java中
public static exampleMethod(){
long start = System.nano();
//do something
long end = System.nano();
long duration = TimeUnit.NANOSECONDS.toMilis(end - start);
}
有时候,这是不一致的,因为Java的持续时间比C的持续时间更长。(约为5到10毫秒)
GetTickCount
返回毫秒,System.nanoTime()
返回纳秒。 - apangin