2014-10-10 41 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