Le lundi 10 février 2014 23:22:47 UTC+1, Ivar Nesje a écrit : > > Currently it is much faster to write a explicit loop, than to use theese > functions. In the 0.3-prerelease version we have a new function foldl and > foldr to do what you want. See the latest docs > http://docs.julialang.org/en/latest/stdlib/base/#Base.reduce
Actually, reduce is notably faster than a loop, at least on my computer and for the task at hand. julia> let biglist = [string(i) for i in 1:20000] , result = BigInt(1); @time for x in biglist ; result *= BigInt(x) ; end ; result ; end elapsed time: 0.381970432 seconds (304614928 bytes allocated) julia> let biglist = [string(i) for i in 1:20000], result = BigInt(1); @time result = mapreduce(BigInt,*, BigInt(1), biglist) ;end elapsed time: 0.022510823 seconds (3048200 bytes allocated) I guess that's because reduce (well, mapreduce) uses some special algorithm when feeded with the operators + and *.