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
그래, 그것은 일반적으로 적용 할 수없는 혼란스러운 결과로 이어질 수 있기 때문에 미래에 대한 단지주의입니다. –