go语言比python快_那天,他对我说GO比PYTHON快100倍,我....

的确是很快,不服不行:

go

/*/

注意:

1.需要编译为c的动态库

go build -buildmode=c-shared -o libcfunc.so cfunclib.go

2.导出的函数必须用 "//export funcname"的方式 //和export之间不能有空白

/*/

package main

import (

"C"

"log"

)

//export sum_n

func sum_n(num int) int {

//计算 的和

log.Printf("num: %d\n", num)

var sum int

for i := 0; i < num; i++ {

sum += i

}

log.Printf("sum: %d\n", sum)

return sum

}

//export stradd

func stradd(a, b *C.char) *C.char {

merge := C.GoString(a) + C.GoString(b)

log.Printf("merge: %s\n", merge)

return C.CString(merge)

}

func main() {

}

python

import ctypes

import time

dll = ctypes.CDLL("./libcfunc.so")

addstr = dll.stradd

# 转化为正确的类型

addstr.argtypes = [ctypes.c_char_p, ctypes.c_char_p]

addstr.restype = ctypes.c_char_p

a = 'test1 啊'.encode('utf-8')

b = ' 三left'.encode('utf-8')

c = addstr(a, b).decode('utf-8')

print(c)

# 对比测试go比python快了多少

go_sum_n = dll.sum_n

go_sum_n.restype = ctypes.c_long

py_sum_n = lambda x:sum(range(x))

btime = time.time()

gov = go_sum_n(1000000)

print("gov", gov, time.time()-btime)

btime = time.time()

pyv = py_sum_n(1000000)

print("pyv", pyv, time.time()-btime)

结果

[archusr@arch-dev standy_py]$ python uselib.py

2020/06/02 09:19:00 merge: test1 啊 三left

test1 啊 三left

2020/06/02 09:19:00 num: 1000000

2020/06/02 09:19:00 sum: 499999500000

gov 499999500000 0.0003707408905029297

pyv 499999500000 0.013869762420654297

不服,不行,啊,来个简单的

python

>>> int('ff'*8, 16)

18446744073709551615

>>> 18446744073709551615*18446744073709551615

340282366920938463426481119284349108225

>>>

go

package main

import (

//"fmt""log"

"os/exec"

"plugin"

"time"

//"github.com/influxdata/telegraf/plugins/inputs/system")

func main() {

a := 18446744073709551615

b := a * a

log.Printf("%d * %d = %d\n", a, a, b)

}

结果

[archusr@arch-dev src]$ go run test1.go

# command-line-arguments

./test1.go:13:4: constant 18446744073709551615 overflows int

./test1.go:24:3: undefined: calcor

好的,你的确是很快,(电影唐伯虎点秋香,我的船很快,沉也沉的很快)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值