Здесь моя реализация рода treap (с неявными ключами и некоторой дополнительной информацией, хранящейся в узлах): http://hpaste.org/42839/treap_with_implicit_keys
В соответствии с данными профилирования GC занимает 80% времени для этой программы. Насколько я понимаю, это связано с тем, что каждый раз, когда a node "изменен", каждый node на пути к корню воссоздается.
Есть ли что-то, что я могу сделать здесь, чтобы улучшить производительность, или мне нужно спуститься в царство монады ST?