наткнулся на такой пакет - https://github.com/melonedo/SingleDispatchArrays.jl говорят что сильно ускоряет работу с массивами, в которых разные типы элементов (но их не очень много) если будет и дальше развиваться, то решит одну из актуальных сложностей с производительностью
Там же сабтайпы типа хранятся в тапле, а функция foreach generated, вот как сабтайпы мы обновляем, так при следующем вызове foreach вызывается генерация кода, который по сути выдаёт большой блоб ifelse
Но правда когда я с похожими вещами возился, то выходило, что оверхед всё-таки слишком большой. То есть раскидать гетерогенный вектор на тупл однородных векторов работало значительно быстрее.