测试array的迭代效率(如何选取迭代顺序)

一个函数有两个输入量,一个算术复杂度高,一个算术复杂度低,你会把哪个放到外循环,哪个放到内循环?

想想也知道应该把算术复杂度低的放到内循环,因为每次外循环迭代,内循环就要计算一次。

如果是用array类型,那么内循环就省了(可以直接计算数值),那么应该迭代复杂度高的量,还是复杂度低的量?

在写上一篇《用python绘出莫比乌斯环》的文章中(现在已经更改),我认为应该迭代复杂度低的量,这样可以发挥出numpy中批量计算的优势。

但是刚刚睡午觉的时候,我怎么想怎么不对,即使是array类型,也应该与两层迭代的原理相同,于是写了个脚本测试了一下。

brucesair:py-develop bruce$ python test.py 

func_x win:20 

func_y win:80

brucesair:py-develop bruce$ python test.py 

func_x win:38 

func_y win:62

brucesair:py-develop bruce$ python test.py 

func_x win:31 

func_y win:69

brucesair:py-develop bruce$ python test.py 

func_x win:33 

func_y win:67

brucesair:py-develop bruce$ python test.py 

func_x win:37 

func_y win:63

brucesair:py-develop bruce$ python test.py 

func_x win:31 

func_y win:69

func_x是迭代复杂度低的量,也就是每次迭代都计算复杂度高的量

func_y是迭代复杂度高的量,也就是每次都计算复杂度低的量。

发现优势并不明显。但是结论依然是:尽量把计算复杂度低的量放到内循环(或者用array直接计算出值)。

源代码:

https://github.com/gt11799/array_iteration_test


————————————

github主页:https://github.com/gt11799 

E-mail:gting405@163.com

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值