I suspect you might find the profiler helpful: http://julia.readthedocs.org/en/latest/stdlib/profile/
(And the ProfileView.jl package provides a nice visualization of profiler results--you should check it out too!) On Tuesday, July 22, 2014 4:47:09 PM UTC-5, Arnaud Amiel wrote: > > To learn how to use Julia, I am running through the project Euler problems > (I had already solved most of them using other languages) and up to now, > they have all comfortably been solved under 1s without any clever > algorithm, even sometimes purposely brute forced. > > However I am stuck on problem 23 (Find the sum of all the positive > integers which cannot be written as the sum of two abundant numbers.) which > solves in 8 s. The surprising thing to me is that what I assume to be the > hard part is solved in 0.1 s. > > I have been struggling on and off for the last week but have gone nowhere. > I thought a fresh pair of eyes may see something. > > Here is my code: > > const maxAbundant = 28123 > > function sumOfDivisors(n::Int) > f = factor(n) > counter = 1 > for i in keys(f) > count = 1 > for j in 1:f[i] > count += i^j > end > counter *= count > end > counter-n > end > > function isAbundant(n::Int) > sumOfDivisors(n) > n ? true : false > end > > abundantNumbers=Array(Int,1) > > abundantNumbers[1]=12 > sizehint(abundantNumbers, maxAbundant) > > for i = 13:maxAbundant > if isAbundant(i) > push!(abundantNumbers, i) > end > end > > isSumOfAbundant=falses(1,maxAbundant) > > tic() > for i = 1:length(abundantNumbers) > for j = i:length(abundantNumbers) > SumOfAbundant = abundantNumbers[i] + abundantNumbers[j] > if SumOfAbundant <= maxAbundant > isSumOfAbundant[SumOfAbundant]=true > else > break > end > end > end > toc() > > > result=0 > for i = 1:maxAbundant > if !isSumOfAbundant[i] > result += i > end > end > > result > > When run with @time I get: > elapsed time: 7.967364175 seconds > elapsed time: 8.06121492 seconds (1359946448 bytes allocated, 18.32% gc > time) > > So I am convinced the bit between tic() and toc() is not right and gc > time may be a clue but I really can't find why. > > Any help will be greatly appreciated. > > One thing I find annoying with Julia is that sometimes what seems to me a > very insignificant change in the code has dramatic effect in the execution > time. It is anyway a great tool to try things and find solutions quickly. I > wish I had had Julia when I started on Project Euler. > > Thanks, > > Arnaud >