我有一个简单的C
函数,我从GoLang
调用。在我的C
函数中,我正在使用gettimeofday
函数。据我所知,这个功能没有给出准确的时间,我也没关系,因为我只需要一些想法。我只想获得运行大for loop
的时差。当我从C
程序运行C
函数时,它运行正常。 for loop
大约需要3秒钟才能完成。但是如果我从GoLang
调用相同的函数,看起来它在for loop
中不需要任何时间。程序立即完成。
这是我的代码。
timetest.h
#include <sys/time.h>
#include<stdio.h>
int TimeTest(){
int i=0;
int j = 1000000000;
unsigned long long startMilli=0;
unsigned long long endMilli=0;
struct timeval te;
gettimeofday(&te, NULL);
startMilli = te.tv_sec*1000LL + te.tv_usec/1000;
for (i=0; i<1000000000; i++){
if (j-1 == i){
printf("matched\n");
}
}
gettimeofday(&te, NULL);
endMilli = te.tv_sec*1000LL + te.tv_usec/1000;
printf("Start = %d End = %d Total time %d\n", startMilli, endMilli, endMilli - startMilli);
return endMilli - startMilli;
}
test.go
package main
// #include <sys/time.h>
// #include "timetest.h"
import "C"
import (
"fmt"
)
func main(){
diff := C.TimeTest()
fmt.Println(diff)
}
MAIN.C
#include"timetest.h"
int main(){
int diff = TimeTest();
printf("%d\n", diff);
return 0;
}