Python与GO的性能测试,结果让人惊掉下巴

[复制链接]
1697|3
 楼主| zhouzpd 发表于 2019-4-27 12:43 | 显示全部楼层 |阅读模式

今天放假一天,闲来无事,突发奇想,测试python函数调用的性能

本来想找找Python有没有类似C的inline内敛函数,结构貌似没有。

找到一个内敛C的inline模块,但没有装VC,编译不了。有兴趣的同学可以试试。

测试功能,执行若干次除10并计算和。

同时编译go为dll,测试了调用外部go性能。

1、调用函数
  1.     sum = 0
  2.     start = time()
  3.     for i in range(test_times):
  4.         sum += div_10(i)
  5.     print("sum=%d" % sum, time() - start)
2、不调用函数
  1.     sum = 0
  2.     start = time()
  3.     for i in range(test_times):
  4.         sum += i // 10
  5.     print("sum=%d" % sum, time() - start)
3、lambda匿名函数
  1.     sum = 0
  2.     f = lambda x: x // 10
  3.     start = time()
  4.     for i in range(test_times):
  5.         sum += f(i)
  6.     print("sum=%d" % sum, time() - start)
4、调用go除10函数
  1.     sum = 0
  2.     start = time()
  3.     for i in range(test_times):
  4.         sum += go_div_10(i)
  5.     print("sum=%d" % sum, time() - start)
5、调用go除10计算和函数
  1.     sum = 0
  2.     start = time()
  3.     sum = go_sum_div_10(test_times)
  4.     print("sum=%d" % sum, time() - start)

以上执行
test_times = 100000

结果:
1、sum=499950000 0.03291058540344238
2、sum=499950000 0.018947362899780273
3、sum=499950000 0.026964902877807617
4、sum=499950000 0.4058797359466553
5、sum=499950000 0.0009963512420654297

python开销:调用函数>匿名函数>直接使用
结果意料之中。

最令人吃**的是:
调用go除10函数效率慢20倍,而调用go
除10计算和函数效率高200倍。

可见调用外部dll过程是十分消耗资源的,但对计算密集型,go编译的dll性能有大幅提升。


性能测试.zip (1.03 MB, 下载次数: 2)



 楼主| zhouzpd 发表于 2019-4-29 23:56 | 显示全部楼层
 楼主| zhouzpd 发表于 2019-4-29 23:57 | 显示全部楼层
飞翔的鱼2019 发表于 2019-5-6 17:11 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

332

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部