测试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:[email protected]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章