使用product
從Iterator.jl可以迭代笛卡爾乘積輸入中的所有組合。然而,事實證明它不僅僅是「暴力破解這」慢得多:迭代笛卡爾乘積很慢
using Iterators
@time(
for tup in product(-100:100, -100:100, -100:100)
# do something with silly tup
maximum(tup)
end
)
# 10.033157 seconds (64.97 M allocations: 3.510 GB, 3.03% gc time)
一個簡單的嵌套循環:
@time(
for x in -100:100, y in -100:100, z in -100:100
# do something silly with x, y, z
maximum([x y z])
end
)
# 0.420949 seconds (8.12 M allocations: 867.374 MB, 4.31% gc time)
有誰知道爲什麼嗎? (使用product
返回的迭代器會導致簡單的代碼的街區,允許人們爲前pmap
在大笛卡爾網格使用朱莉婭v"0.5.1"
)
非常感謝,但是在這個特定的例子中,我認爲全球範圍內的時間和類型化的功能之間沒有任何區別......? (或者我錯過了什麼?) – luffe
是的,這只是對未來的謹慎,因爲它會導致混淆的結果,而這些結果通常不適用。 –