【发布时间】:2015-04-21 17:15:06
【问题描述】:
在 static and dynamic dispatch 的 Rust 书籍部分有一些关于这个主题的背景,但 tl;dr 是在 trait 引用和其他一些不同情况(函数指针等)上调用方法会导致动态而不是静态调度。
在应用优化后,它的实际运行时成本是多少?
例如,想象一下这组结构和特征:
struct Buffer;
struct TmpBuffer;
struct TmpMutBuffer;
impl BufferType for Buffer { ... }
impl BufferType for BufferTmp { ... }
impl BufferType for BufferTmpMut { ... }
impl Buffer2D for BufferType { ... }
impl Buffer2DExt for Buffer2D { ... }
请注意,这里的特征是在特征本身上实现的。
从Buffer2DExt 在结构引用上调用方法的动态调度调用成本是多少?
最近的问题What are Rust's exact auto-dereferencing rules?关于解引用规则;这些规则是在编译时应用还是在运行时应用?
【问题讨论】:
-
在结构引用上调用任何方法将是静态调度,而不是动态调度,因为您已经知道类型以及要调用的确切函数。
-
解引用规则在编译时应用。
标签: rust