Lars and I once put a tool together which writes the info into a .pro
file, similar to memory profiling with a .mem file.  Never made it into
a PR but maybe of use:

https://github.com/mauro3/ProfileFile.jl

On Tue, 2016-10-25 at 23:36, Angel de Vicente <angel.vicente.garr...@gmail.com> 
wrote:
> Hi,
>
> I'm trying to profile a simple code I wrote that has just two
> functions. When I call Profile.print() I get a lot of detail about
> modules that (at least at this point) I'm not interested in profiling
> (in this case, for example the Primes module, and the REPL itself).
>
> ,----
> | julia> Profile.print()
> | 97 ./event.jl:68; (::Base.REPL.##3#4{Base.REPL.REPLBackend})()
> |  97 ./REPL.jl:95; macro expansion
> |   97 ./REPL.jl:64; eval_user_input(::Any, ::Base.REPL.REPLBackend)
> |    97 ./boot.jl:234; eval(::Module, ::Any)
> |     97 ./<missing>:?; anonymous
> |      97 ./profile.jl:16; macro expansion;
> |       69 /home/angelv/temp/p21.jl:8; p21(::Int64)
> |        1  /home/angelv/temp/p21.jl:0; sumfactors(::Int64)
> |        1  /home/angelv/temp/p21.jl:23; sumfactors(::Int64)
> |         1 ./abstractarray.jl:21; vect(::Int64, ::Vararg{Int64,N})
> |        49 /home/angelv/temp/p21.jl:24; sumfactors(::Int64)
> |         1  ...v/.julia/v0.5/Primes/src/Primes.jl:246; factor!(::Int64, 
> ::Dict{Int64,Int64})
> |          1 ...v/.julia/v0.5/Primes/src/Primes.jl:154; isprime(::Int64)
> |           1 ...v/.julia/v0.5/Primes/src/Primes.jl:213; witnesses(::Int64)
> |            1 .../.julia/v0.5/Primes/src/Primes.jl:210; _witnesses(::UInt64)
> |         1  ...v/.julia/v0.5/Primes/src/Primes.jl:252; factor!(::Int64, 
> ::Dict{Int64,Int64})
> |         1  ...v/.julia/v0.5/Primes/src/Primes.jl:254; factor!(::Int64, 
> ::Dict{Int64,Int64})
> |          1 ./dict.jl:692; get
> | ...
> `----
>
> I think it would be nice to have three more options to the Profile.print
> function, which should not be difficult to implement:
>
> 1. to print percentages
> 2. to limit the output based on a list of regex
> 3. to be able to select the number of spaces added at each indentation
>    level
>
> So, for example, I could make a call like
>
> julia> Profile.print(consider=[r"/home/angelv/temp]",percentage=true,indent=3)
> 71.10%        69 /home/angelv/temp/p21.jl:8; p21(::Int64)
>    01.00%        1  /home/angelv/temp/p21.jl:0; sumfactors(::Int64)
>    01.00%        1  /home/angelv/temp/p21.jl:23; sumfactors(::Int64)
>    50.50%        49 /home/angelv/temp/p21.jl:24; sumfactors(::Int64)
>    18.60%        18 /home/angelv/temp/p21.jl:25; sumfactors(::Int64)
> 28.90%        28 /home/angelv/temp/p21.jl:11; p21(::Int64)
>    19.60%        19 /home/angelv/temp/p21.jl:24; sumfactors(::Int64)
>    06.20%        6  /home/angelv/temp/p21.jl:25; sumfactors(::Int64)
>    01.00%        1  /home/angelv/temp/p21.jl:27; sumfactors(::Int64)
>
>
> This would make reading the profile data much simpler for when you are
> developing new code and are not interested in profiling other modules.
>
> Is this reasonable? Could this be implemented? (My proficiency with
> Julia is very basic right now, but if this is considered a useful
> addition, I could try to contribute with changes to profile.jl)
>
> Cheers,

Reply via email to