Hi All,

I'm new in Julia and I need to decide about the more correct/better 
implementation for two data collection. I have implemented mean absolute 
percentage error (MAPE) for *Generator Expressions* (Comprehensions without 
brackets):

a = rand(10_000_000)
p = rand(10_000_000)

err(actual, predicted) = (actual - predicted) / actual

f(a, p) = 100 * sumabs(err(a[i], p[i]) for i in eachindex(a)) /length(a)

a with *mapreduce()* function.

function mapre(a, p)
    s = mapreduce(t -> begin b,c=t; abs((b - c) / b) end, +, zip(a, p))
    s * 100/length(a)
end

When compare *@time f(a,p) *I get:

0.026515 seconds (11 allocations: 304 bytes) 797.1301337918511

and *@time mapre(a, p):*

0.079932 seconds (9 allocations: 272 bytes) 797.1301337918511


Thanks in advance,
Martin

Reply via email to