Краткий ответ: я бы пошел за класс.
Как тип значения, структура, когда создается в "локальной области видимости" (специфичной для одного класса или метода), обычно помещается в стек,Это обеспечивает быстрый доступ, и от него легко избавиться, когда он вам больше не нужен, так что это простой способ хранения простых локальных переменных.Однако в вашем случае этот тип значения станет элементом коллекции (это ссылочный тип, хранящийся в куче).Объекты в куче не могут ссылаться на объекты в стеке;объект должен быть скопирован из стека в кучу, и должна быть сделана ссылка на новый адрес кучи объекта.Этот процесс называется «боксом».Затем, когда структура присваивается другой локальной переменной или передается по значению в метод, она копируется обратно в место в стеке («распаковка»).Этот процесс упаковки и распаковки будет влиять на производительность, и его, как правило, следует избегать, где это возможно (конечно, бывают случаи, когда вы просто не можете его избежать; список типов значений не является плохим только потому, что он требует упаковки, еслиэто правильный инструмент для работы).
Класс, напротив, является «ссылочным типом», и при создании он по умолчанию сохраняется в куче.Это означает, что он может зависать столько времени, сколько необходимо (при условии, что он имеет хотя бы одну ссылку, сделанную на него другими переменными в области видимости), и все, что должно быть в стеке - это 32-разрядный целочисленный «указатель» (техническине то же самое, что указатель C / C ++, но похоже) на адрес объекта в куче.Чтобы получить доступ к элементам данных объекта, указатель должен быть «разыменован» для чтения необходимых данных из объекта в куче, но по большей части, пока класс не активно манипулируется, его гораздо легче обойти (единственный32-битная переменная вместо "широкого" многозначного чанка, копируемого в разных местах).
Итак, поскольку вы знаете, что объект должен идти в кучу, несмотря ни на что, и в случаеЗаписывать в журнал элементы, которые вы, вероятно, не будете делать с помощью большого количества манипуляций между созданием объекта и сохранением его данных в файле, я думаю, вы обнаружите, что класс будет работать лучше.Но, стек против кучи - это, откровенно говоря, деталь реализации, которая обычно, но не всегда верна, и в зависимости от размера структуры и того, сколько раз вы ее передаете, накладные расходы на копирование из стека в кучу один раз по сравнению с многочисленными обращениями к указателю.инициализируйте класс, любой из них может работать лучше в зависимости от вашего точного кода.Итак, я согласен с Эриком;выровняйте двух кандидатов в модульных тестах, и пусть победит лучшая реализация.