Ok. Well, here is Julia code that’s better:
function divsum(n::Int)
s = 0
for x in 1:(n - 1)
if rem(n, x) == 0
s += x
end
end
return s
end
function amicable(n::Int)
d = divsum(n)
return d != n && divsum(d) == n
end
function amicablesum(bound::Int)
s = 0
for n in 1:bound
if amicable(n)
s += n
end
end
return s
end
function getsum()
t = @elapsed res = amicablesum(9999)
return t, res
end
getsum()
On my machine, that produces the tuple, (0.783862268,31626).
— John
On Mar 16, 2014, at 1:44 PM, Stefan Schwarz <[email protected]> wrote:
> If you refer to the MainEvaluator and rule based approach inside Mathematic
> plus that there is no real function call semantics...
> no. Performance comparisons must be absolute, despite of a (sometimes)
> nebulous execution model Mathematica has.
>
> Are you saying, that if you'd use a similar execution model that Mathematica
> has you gain more speed?
> You're able to change the execution model of a llvm IR code generator? How
> you gonna do this?
>
> I don't think that you can change the code to gain more speed, because you
> involve a special execution model,
> but I do believe that you can better Julia code that I've done.