Я борюсь с концепцией использования бинарных деревьев поиска и использования словарей.
В моем приложении я сделал небольшой эксперимент, в котором использовалась библиотека C5 TreeDictionary
(которая, я считаю, является красно-черным двоичным деревом поиска) и словарь С#. Словарь всегда был быстрее при добавлении/поиске, а также всегда использовался меньше пространства памяти. Например, в 16809 <int, float>
в словаре использовался 342 KiB, тогда как дерево использовало 723 KiB.
Я думал, что BST должен быть более эффективным с точки зрения памяти, но кажется, что один node дерева требует больше байтов, чем одна запись в словаре. Что дает? Есть ли точка, где BST лучше словарей?
Также, как побочный вопрос, знает ли кто-нибудь, есть ли более быстрая + более эффективная по памяти структура данных для хранения пар <int, float>
для доступа к типу словаря, чем любая из указанных структур?