Как совет и не более:
1) Посчитай сколько веток у дерева;
2) Руби дерево по веткам и кидай каждую ветку в отдельный поток (ветка как новое дерево в потоке, как новый Ref в интерфейсе);
3) Контролируй вложенность каждой срубленной ветки и при необходимости руби на более мелкие ветки;
3) Если дерево с о-о-очень длинным вложениями (ветками) - как вариант создавай очередь потоков;
4) Если дерево "вЕсит" очень много - как вариант разбивай на маленькие деревья и выбрасывай пул на диск, а индексы в ОЗУ.
Такой подход займет время на подготовку(парсинг), но существенно ускорит запись/чтение листьев.
Может я не правильно понял задачу. Я видел лишь попытку разбора дерева, а что делается с листьями? Куда ложатся данные? Если в одно и то же место - следует ли учесть порядок данных? и т.д.
__________________
Самые сильные программисты были на заре компьютеризации.
И чем дольше я программист, тем больше это понимаю - мы до сих пор поддерживаем их код...
|