virtio: consider avoiding dynamic dispatch with `enum_dispatch`
mkroening opened this issue · 2 comments
Before 02860f2
, there was an enum for abstracting over split and packed virtqueues:
pub enum Virtq {
Packed(PackedVq),
Split(SplitVq),
}
Currently, we are using a trait via Rc<dyn Virtq>
instead of Rc<Virtq>
.
We need to consider automating the previous enum-based static dispatch via enum_dispatch
for performance.
This would be a nice fit because restricting the set of implementors is no problem for us.
This might not have a too much of an impact, depending on how hot these dynamic dispatches are right now.
I think we can close this issue since using a trait and trait objects worked out for SplitVq
and PackedVq
s.
I think we can close this issue since using a trait and trait objects worked out for
SplitVq
andPackedVq
s.
This issue is about potential performance improvements, not about whether we need it to work at all. I have reworked the description.
This issue might be interesting for @CarlWachter, who will be working on benchmarking.
CC: @jounathaen