我似乎无法D-ary Heap
在 C# 中创建一个高性能类;硬编码的孩子数量(BinaryHeap
,TernaryHeap
等)似乎具有明显更好的性能。
BinaryHeap
my和 my D-ary Heap
with之间代码的唯一区别d=2
是,前者d
是 a const
,后者是 readonly 成员变量(并且readonly 对性能没有影响)。
我猜该const
版本可能会编译为位移操作,而成员变量版本可能会编译为内存获取 + 分区。
有没有办法可以像这样声明我的类:
public class DaryHeap<T, const uint(d)> : IEnumerable<T> where T : IComparable<T>
其中const uint(d)
会告诉编译器“d
是编译uint
时值”。因此,会让 my D-ary Heap
withd=2
与 my BinaryHeap
.