К
Size: a a a
К
Э
Э
match по енаму чаще всего быстрее dynamic dispatch, если только у тебя не 100500 вариантов енама.NL
К
Э
К
Э
KK
MB
KK
Э
Э
match en {
Little => { /* inlined */ }
Big => { /* ptr jump */ }
Branched => { /* short branch inlined, other by ptr */ }
}KK
func_ptr = vtable[2];сильно медленнее чем:
func_ptr(...);
discr = enum.0
if discr == 0 { func_a(enum.1) }
else if discr == 1 { func_b(enum.1) }
else if discr == 2 { func_c(enum.1) }
...
Э
func_ptr = vtable[2];сильно медленнее чем:
func_ptr(...);
discr = enum.0
if discr == 0 { func_a(enum.1) }
else if discr == 1 { func_b(enum.1) }
else if discr == 2 { func_c(enum.1) }
...
enum_dispatch крейта.KK
enum_dispatch крейта.Э
Э
KK
#[async_trait]).Э
#[async_trait]).Box<Future>?