2

Julia の複数のディスパッチと型としての値のアプローチについては、まだ学習中です。Val{c}() のインスタンス化は、辞書検索よりも約 50 倍遅いようです。その後、ディスパッチは辞書検索よりも 6 倍速いようです。

これらの期間は予想されますか? Val{c}() のインスタンス化を高速化することは可能ですか?

using BenchmarkTools

rand_n = rand([4,11], 1_000_000)

simple_dict = Dict(4 => 11, 11 => 4)
call_dict(num) = simple_dict[num]

@benchmark call_dict.($rand_n) # 42.113ms

val_type(::Val{4}) = 11
val_type(::Val{11}) = 4

@benchmark Val.($rand_n) # 2.4s

partial_result = Val.(rand_n)
@benchmark val_type.($partial_result) # 7ms
4

1 に答える 1