Компромисс между движением и без движения является сложным. Я не знаю каких-либо конкретных исследований того аспекта, который вы упомянули - на самом деле, я не уверен, что полностью его понимаю: точный GC всегда должен знать, где находятся все указатели, поэтому, возможно, вы говорите о консервативный неподвижный GC? Консервативный сборщик мусора, на мой взгляд, плохой выбор, если у вас достаточно контроля над путем компиляции, чтобы иметь возможность делать точный сборщик мусора.
Другие аспекты, влияющие на производительность движущегося и неподвижного ГХ:
Скорость выделения. Неподвижный GC, возможно, придется выделить из свободного списка, в то время как Coing GC может использовать выделение указателя удара. Гибридные схемы, такие как Immix , пытаются найти лучший компромисс между ними.
Локальность и поведение кэша. Существует множество исследований по этому вопросу как для подвижного, так и для неподвижного ГХ; см. Библиография GC . Вообще говоря, сжатие хорошо для кеша, хотя копирование GC, как правило, занимает первое место, что является плохим выбором (шаблоны доступа имеют тенденцию быть в первую очередь глубиной), поэтому существует множество исследований в этой области, пытающихся упорядочить объекты, чтобы соответствовать шаблону доступа .
Мое личное мнение заключается в том, что для поддержки действительно быстрого выделения вам понадобится питомник размером L2 с копированием коллекции и выделением ударных указателей. Если вы делаете что-то еще, распределение становится более дорогим, что искажает многие вещи: оптимизация для сокращения распределения становится более важной, так что вы в конечном итоге затрачиваете усилия и усложняете ситуацию. Я бы предпочел сделать распределение действительно очень дешевым, а потом не беспокоиться об этом.