Как правило, нужно сделать структуру данных максимально простой и нормализованной.Например, не просто добавлять структуры данных хеш-таблиц только потому, что их легко получить.Знать, как выполнять профилирование (, вот мой метод ), и если у вас есть реальная проблема с производительностью, то исправьте ее.Иначе, чем проще, тем лучше, даже если это означает простые массивы, списки и циклы O (N).
Причина для нормализации структуры данных состоит в том, что если это не так, то у нее могут быть противоречивые состоянияи у вас будет сильное искушение написать код в стиле уведомлений, чтобы попытаться сохранить его согласованность.Это могут быть настоящие убийцы производительности.Если вы сделаете это, профилирование скажет вам, что это то, что происходит.Если у вас должны быть избыточные данные, я думаю, что лучше иметь возможность допустить некоторое временное несоответствие, которое вы периодически исправляете, передавая данные.Это лучше, чем пытаться постоянно гарантировать согласованность с помощью уведомлений.
Другая проблема с ненормализованной структурой данных состоит в том, что она может создавать и уничтожать множество объектов.Это также может привести к снижению производительности, хотя вы можете улучшить его с помощью техники пула.