Interprete Profile results

Dear Julia experts,

I have profiled my code and get the following results. The major worker in the code is a recursive function. Does this result show that something is wrong with that ? Perhaps I should specify the input / output types? what else can I do to minimise the calls to functions in typeinfer.jl ?

Overhead ╎ [+additional indent] Count File:Line; Function
=========================================================
    ╎20432 @Base/client.jl:506; _start()
    ╎ 20432 @Base/client.jl:296; exec_options(::Base.JLOptions)
    ╎  20432 @Base/Base.jl:368; include(::Module, ::String)
 830╎   20432 @Base/Base.jl:380; include(::Function, ::Module, ::String)
    ╎    972   @Base/compiler/typeinfer.jl:601; typeinf_ext(::Core.MethodInstance, ::UInt64)
    ╎     972   @Base/compiler/typeinfer.jl:570; typeinf_ext(::Core.MethodInstance, ::Core.Compiler.Params)
    ╎    ╎ 972   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎  972   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎   755   @Base/compiler/abstractinterpretation.jl:1255; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    755   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎     755   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎ 755   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎  755   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎   755   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    755   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎     755   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎ 750   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎  749   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎   206   @Base/compiler/abstractinterpretation.jl:1255; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    206   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎     206   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎ 206   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎  206   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎   206   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    206   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎     206   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎ 203   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎  203   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎   203   @Base/compiler/abstractinterpretation.jl:1270; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    203   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎     203   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 203   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎  202   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎   200   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    200   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎     200   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎   543   @Base/compiler/abstractinterpretation.jl:1270; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    543   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎     543   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎ 543   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎  543   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎   539   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    539   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎     538   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎ 512   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎  512   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎   421   @Base/compiler/abstractinterpretation.jl:1255; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    421   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎     421   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 421   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎  415   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎   414   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    414   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎     414   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 408   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  408   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎   379   @Base/compiler/abstractinterpretation.jl:1270; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    379   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     379   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 379   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  379   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎   377   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    377   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     377   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 375   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  375   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎   374   @Base/compiler/abstractinterpretation.jl:1270; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    374   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     374   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 371   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  363   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎   360   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    360   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     360   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 353   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  353   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎   217   @Base/compiler/abstractinterpretation.jl:1270; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    217   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎     217   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎ 217   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎  217   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎   216   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    216   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎     216   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎ 214   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎  214   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎   209   @Base/compiler/abstractinterpretation.jl:1270; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    209   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎     209   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎ 209   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎  209   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎   207   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    207   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎     207   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎ 202   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎  202   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    288   @SmartParser/test/optimize.jl:10; build_structure_tree(::String)
    ╎    901   @SmartParser/test/optimize.jl:14; build_structure_tree(::String)
    ╎     290   @SmartParser/src/find_block.jl:213; build_block_init(::Array{Array{Int64,1},1})
  42╎    ╎ 289   @Base/deprecated.jl:47; top(::DataStructures.Stack{Tuple{Int64,Block}})
    ╎    ╎  247   @Base/compiler/typeinfer.jl:601; typeinf_ext(::Core.MethodInstance, ::UInt64)
    ╎    ╎   247   @Base/compiler/typeinfer.jl:570; typeinf_ext(::Core.MethodInstance, ::Core.Compiler.Params)
    ╎    ╎    246   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎     246   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎    ╎ 246   @Base/compiler/abstractinterpretation.jl:1270; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎  246   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎   246   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    246   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎     246   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎ 246   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎  246   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎   246   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    244   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎     244   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎ 235   @Base/compiler/abstractinterpretation.jl:1270; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎  235   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎   235   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    235   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎     234   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎ 234   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎  234   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎   234   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    232   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎     232   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 220   @Base/compiler/abstractinterpretation.jl:1270; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎  220   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎   220   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    220   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎     220   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 219   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  219   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎   218   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    201   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     201   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)

...
...

/buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.5/SparseArrays/src/sparsevector.jl:1070; vcat(::Array{Singleline,1}, ::Array{Multiline,1}, ::Array{Singleline,1}, ::Vararg{Array{T,1} where T,N} where N)
 172╎    ╎    ╎    ╎ 276   @Base/abstractarray.jl:1453; typed_vcat(::Type{Block}, ::Array{Singleline,1}, ::Array{Multiline,1}, ::Array{Singleline,1}, ::Vararg{Union{AbstractArray{T,1}, AbstractArray{T,2}} where T,N} where N)
    ╎    ╎    ╎    ╎ 304   @Base/compiler/typeinfer.jl:601; typeinf_ext(::Core.MethodInstance, ::UInt64)
    ╎    ╎    ╎    ╎  303   @Base/compiler/typeinfer.jl:570; typeinf_ext(::Core.MethodInstance, ::Core.Compiler.Params)
    ╎    ╎    ╎    ╎   301   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    301   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎     301   @Base/compiler/abstractinterpretation.jl:1270; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎ 301   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎  301   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎   301   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    301   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎     301   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎ 301   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎  300   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎   289   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    289   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎     270   @Base/compiler/abstractinterpretation.jl:1270; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 270   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎  270   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎   270   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    268   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎     258   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 258   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
 
...
...
...
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 231   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  231   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎   229   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    229   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     229   @Base/compiler/abstractinterpretation.jl:1270; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 229   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  229   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎   229   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    229   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     229   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 229   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  228   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎   227   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    227   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     227   @Base/compiler/abstractinterpretation.jl:1270; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 227   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  227   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎   227   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    227   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     222   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 222   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  222   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎   222   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    222   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     222   @Base/compiler/abstractinterpretation.jl:1270; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 222   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  222   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎   218   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    218   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     217   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 217  

...
...
...
...

Total snapshots: 21671

another sample of the profile result (after specifying function argument types and return types)

Overhead ╎ [+additional indent] Count File:Line; Function
=========================================================
    ╎19158 @Base/client.jl:506; _start()
    ╎ 19158 @Base/client.jl:296; exec_options(::Base.JLOptions)
    ╎  19158 @Base/Base.jl:368; include(::Module, ::String)
 786╎   19158 @Base/Base.jl:380; include(::Function, ::Module, ::String)
    ╎    1065  @Base/compiler/typeinfer.jl:601; typeinf_ext(::Core.MethodInstance, ::UInt64)
    ╎     1065  @Base/compiler/typeinfer.jl:570; typeinf_ext(::Core.MethodInstance, ::Core.Compiler.Params)
    ╎    ╎ 1065  @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎  1065  @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎   852   @Base/compiler/abstractinterpretation.jl:1255; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    852   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎     852   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎ 852   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎  852   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎   851   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    851   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎     851   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎ 833   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎  833   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎   220   @Base/compiler/abstractinterpretation.jl:1255; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    220   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎     220   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎ 220   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎  220   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎   220   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    220   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎     220   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎ 218   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎  218   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎   217   @Base/compiler/abstractinterpretation.jl:1270; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    217   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎     217   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 217   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎  217   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎   217   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    217   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎     217   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 214   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  214   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎   613   @Base/compiler/abstractinterpretation.jl:1270; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    613   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎     613   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎ 613   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎  611   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎   608   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    608   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎     608   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎ 598   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎  598   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎   549   @Base/compiler/abstractinterpretation.jl:1255; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    549   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎     549   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 549   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎  543   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎   542   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    542   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎     542   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 533   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  533   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎   437   @Base/compiler/abstractinterpretation.jl:1270; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    437   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     437   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 437   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  437   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎   434   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    434   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     432   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 428   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  428   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎   428   @Base/compiler/abstractinterpretation.jl:1270; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    428   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     428   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 427   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  419   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎   418   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    418   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     414   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 407   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  407   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎   220   @Base/compiler/abstractinterpretation.jl:1255; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    220   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     220   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 220   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  220   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎   220   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    220   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     220   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 213   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  213   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎   213   @Base/compiler/abstractinterpretation.jl:1270; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    213   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     213   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 213   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  213   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎   207   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    207   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     204   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 200   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  200   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎   200   @Base/compiler/abstractinterpretation.jl:1270; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    200   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎     200   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎ 200   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎    ╎  200   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎   213   @Base/compiler/abstractinterpretation.jl:1270; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    213   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎     213   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎ 213   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎  213   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎   213   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    213   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎     213   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎ 211   @Base/compiler/typeinfer.jl:12; typeinf(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎  211   @Base/compiler/abstractinterpretation.jl:1326; typeinf_nocycle(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎   208   @Base/compiler/abstractinterpretation.jl:1270; typeinf_local(::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    208   @Base/compiler/abstractinterpretation.jl:1005; abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎     208   @Base/compiler/abstractinterpretation.jl:911; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎ 208   @Base/compiler/abstractinterpretation.jl:926; abstract_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎  208   @Base/compiler/abstractinterpretation.jl:904; abstract_call_known(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎   206   @Base/compiler/abstractinterpretation.jl:111; abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64)
    ╎    ╎    ╎    ╎    ╎    206   @Base/compiler/abstractinterpretation.jl:419; abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState)
    ╎    ╎    ╎    ╎    ╎     206   @Base/compiler/typeinfer.jl:484; typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState)
...
...
...

See this blog post for tips on profiling recursions.

2 Likes

Great post, thanks! It demonstrates the profile result of a Fibonacci function, and the result is clear. What I am confused about is the calling on abstract_call , abstract_call_known , etc when profiling my code. Am I asking Julia to do too much work?

Edit: VSCode has excellent profile support, especially the visualization of results from @profview .

1 Like

I would guess that your recursive function is not type stable. Can we see the code?