C gettimeofday与GoLang无法正常工作

时间:2016-10-04 18:07:27

标签: c go

我有一个简单的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;
}

0 个答案:

没有答案