... And really should be, if you want to use code typed: # module scope
ff(x::Type{Val{1}}) = 1 const y = 1 function test() # local scope x = 1 a = ff(Val{x}) c = ff(Val{y}) d = ff(Val{1}) end @code_warntype test() Best, Simon Am Mittwoch, 16. November 2016 16:06:31 UTC+1 schrieb FANG Colin: > > In performance tips, it says > > Essentially, Val{T}works only when T is either hard-coded (Val{3}) or > already specified in the type-domain. > > Suppose I have > > ff(::Type{Val{1}}) = 1 > > I guess the following is on a slower route. > > x = 1 > a = ff(::Type{Val{x}}) > > And maybe this one can be determined in compile time > > const y = 1 > a = ff(::Type{Val{y}}) > > How can I tell if it is fast or slow? @code_warntype doesn't tell the > difference here? >