эх молодёж
LogRus, да согласен, код тяжеловат, но факт что работает:) и парсер работает в один проход.
во-первых, пока ты используешь read_end-- или read_start-- или _in.seekg(start, std::ios::beg) можешь мне про один проход не рассказывать
полагаю твой парсер не сможет работать, если вместо файла ему подсунуть stdin
Длинная конструкция switch это реализация конечного автомата на 4 состояния и перебросить от туда код в функции довольно сложно
Жалкие отмазки, не достойные программиста
Если честно, то я бы своим коллегам высказал всё, что думаю о коде и попросил бы переписать, если понадобится с нуля.
Даже если вынести код в функции, то результат их выполнения придется проверять и появятся дополнительные if/else которые не тольго загрузят код, но еще дадут дополнительную задержку...
Бу-га-га буквально
думаю враг твоей производительности new и delete, а не какие-то примитивные if/else/switch
ранняя оптимизация это одна из самых худших вещей которые может сделать программист
Вопрос несколько в другом, каким образом организовать выделение памяти, чтобы не использовать такое количество new/delete. Ведь они вносят основную задержку в выполнение кода.
во-во
тут тебе нужно искать компромис
между скоростю и расходом памяти может еще какие компромиссы найдутся