測試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]

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