对xobotos 中著名的性能提升感到好奇,我查看了二叉树基准代码。
二叉树节点的Java版本是:
private static class TreeNode
{
private TreeNode left, right;
private int item;
}
C# 版本是:
struct TreeNode
{
class Next
{
public TreeNode left, right;
}
private Next next;
private int item;
}
我想知道在这里使用结构有什么好处,因为 Next 和 Previous 指针仍然封装在一个类中。
好吧,有一个 - 叶节点是纯值类型,因为它们不需要左右指针。在一半节点是叶子的典型二叉树中,这意味着对象数量减少了 50%。尽管如此,列出的性能提升似乎要大得多。
问题:还有更多吗?
此外,由于我不会想到在 C# 中以这种方式定义树节点(感谢 Xamarin!)还有哪些其他数据结构可以从以非显而易见的方式使用结构中受益?(尽管这有点离题且开放式。)