XobotOS: Почему в тесте двоичного дерева C# используется структура?

Интересуясь предполагаемым приростом производительностив 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!), какие еще структуры данных могут выиграть от неочевидного использования структур? (Хотя это немного не по теме и с открытым концом.)

11
задан bright 17 May 2012 в 05:41
поделиться