bri*_*ght 11 c# mono benchmarking xobotos
对于xobotos中声称的性能提升感到好奇,我查看了二叉树基准测试代码.
二叉树节点的Java版本是:
private static class TreeNode
{
private TreeNode left, right;
private int item;
}
Run Code Online (Sandbox Code Playgroud)
在C#版本是:
struct TreeNode
{
class Next
{
public TreeNode left, right;
}
private Next next;
private int item;
}
Run Code Online (Sandbox Code Playgroud)
我想知道在这里使用struct的好处是什么,因为Next和Previous指针仍然封装在一个类中.
嗯,有一个叶子节点是纯值类型,因为它们不需要左右指针.在典型的二叉树中,一半节点是叶子,这意味着对象数量减少了50%.不过,所列出的业绩增长似乎要大得多.
问题:还有更多吗?
此外,由于我不会想到在C#中以这种方式定义树节点(感谢Xamarin!),其他数据结构可以从非显而易见的方式使用结构中获益吗?(尽管这有点偏离主题并且是开放式的.)