1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C语言程序运行慢是什么问题 为什么cgo的表现如此缓慢?我的测试代码有什么问题吗?...

C语言程序运行慢是什么问题 为什么cgo的表现如此缓慢?我的测试代码有什么问题吗?...

时间:2019-10-22 08:47:51

相关推荐

C语言程序运行慢是什么问题 为什么cgo的表现如此缓慢?我的测试代码有什么问题吗?...

我正在做一个测试:比较cgo和pure Go功能的卓越时间每次运行1亿次.与Golang功能相比,cgo功能需要更长的时间,我对此结果感到困惑.我的测试代码是:

package main

import (

"fmt"

"time"

)

/*

#include

#include

#include

void show() {

}

*/

// #cgo LDFLAGS: -lstdc++

import "C"

//import "fmt"

func show() {

}

func main() {

now := time.Now()

for i := 0; i < 100000000; i = i + 1 {

C.show()

}

end_time := time.Now()

var dur_time time.Duration = end_time.Sub(now)

var elapsed_min float64 = dur_time.Minutes()

var elapsed_sec float64 = dur_time.Seconds()

var elapsed_nano int64 = dur_time.Nanoseconds()

fmt.Printf("cgo show function elasped %f minutes or \nelapsed %f seconds or \nelapsed %d nanoseconds\n",elapsed_min,elapsed_sec,elapsed_nano)

now = time.Now()

for i := 0; i < 100000000; i = i + 1 {

show()

}

end_time = time.Now()

dur_time = end_time.Sub(now)

elapsed_min = dur_time.Minutes()

elapsed_sec = dur_time.Seconds()

elapsed_nano = dur_time.Nanoseconds()

fmt.Printf("go show function elasped %f minutes or \nelapsed %f seconds or \nelapsed %d nanoseconds\n",elapsed_nano)

var input string

fmt.Scanln(&input)

}

结果是:

cgo show function elasped 0.368096 minutes or

elapsed 22.085756 seconds or

elapsed 22085755775 nanoseconds

go show function elasped 0.000654 minutes or

elapsed 0.039257 seconds or

elapsed 39257120 nanoseconds

结果表明,调用C函数比Go函数慢.我的测试代码有什么问题吗?

我的系统是:mac OS X 10.9.4(13E28)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。