2014-10-10 55 views
0

我明白这个问题起初可能没有道理,但我会在这里解释一下。当我从Java代码执行它时,应该如何测量C++程序的执行时间?

首先,我有以下代码:C++代码,一个简单的Hello World。

long start = System.nanoTime(); 
Process p = Runtime.getRuntime().exec("/home/name/./test"); 
long totalTime = System.nanoTime() - start; 

System.out.println("Time: " + totalTime); 

这样一对夫妇的时候,我得到下面的输出后:

时间:8155128

#include <stdio.h> 
#include <stdlib.h> 
int main() 
{ 
    printf("Hello World "); 
    return(0); 
} 

现在我从的Java内使用该叫它时间:732204

时间:50 8819

时间:662987

我不知道这是衡量的C++代码执行的时间以正确的方式,我想知道是否有关于为什么总是第一个执行显示的时间的解释10X比其他的更大(即使是纳秒)

+0

我不同意这是重复的。由于它是一个JNI程序,它肯定不是导致程序第二次运行得更快的JIT。 – 2014-10-10 01:32:36

+0

假装你是一名专业人士并且介绍了代码。 – 2014-10-10 02:10:00

回答

2

操作系统可能会将C++应用程序放入缓存中,以便下次执行时更快。

+0

8毫秒是关于一个或两个非SSD硬盘驱动器查找的时间(读取时间可以忽略不计)。由于'libc'可能已经存在于为磁盘缓存分配的RAM中,这意味着只是可执行文件或可执行文件以及特定于其的一个库。 – o11c 2014-10-10 01:49:39