То есть там по сути получается небезопасное полностью ручное управление памятью в стиле Си?
Не очень понял вопрос. Объекты я кэшировал для повторного использования задолго до того как стал их размещать сначала на массивах структур, а потом и вовсе в неуправляемой памяти. То есть временем жизни объектов я управлял вручную очень давно. И это не имеет отношения к Си. Размещение объектов на массивах структур привело к тому, что GC перестал видеть эти объекты, и перестал делать паузы в работе программы. Размещение объектов в неуправляемой памяти привело к ускорению работы: доступ по указателям всё же быстрее чем по индексам в двумерном массиве (двумерный так как нужна страница+смещение). Но теперь да, конечно, шаг вправо, шаг влево - порча памяти - это как в Си.
А по поводу зарплат, если верить вот этому: http://habrahabr.ru/company/it_dominanta/blog/147866/ то разница средних зарплатах между С++ программером и С# программером в общем то и нет. А вот дисперсия да, у C++ больше
Вот поэтому надо ориентироваться не на среднюю, а на максимальную - каков потолок.
Кстати, в указанной тобой статье неверные данные по потолку зарплаты для С++ по Нижнему Новгороду. Там где я буду работать потолок зарплат выше, такой же высокий как для Java. То есть идти переучиваться в Java программиста только лишь из-за денег для меня смысла нет.