Заметил в функции объявление около 15-ти глобальных переменных, которые довольно весомые и постоянно висят в памяти походу.
Что лучше использовать если функция принадлежит классу - переменные класса или глобальные?
Вообще нормально использовать очень много глобальных переменных?
Тут дело не в памяти, а в неявных связях. Чем шире область видимости, тем труднее понять в каком месте значение переменной меняется. Поэтому нет, использовать глобальные переменные ненормально.