Я пытаюсь оптимизировать структуру данных, которая интенсивно используется. Прямо сейчас эта структура данных реализована как динамический массив составных узлов. Типичное использование - последовательный доступ от первого элемента к последнему элементу с чтением и изменением составляющих значений (целых и двойных). Типичный размер массива составляет от 10 до 200 элементов. Другой тип операции - вставка / удаление элементов этого массива. После некоторого профилирования я обнаружил, что вставки очень дороги с точки зрения общей производительности алгоритма, поэтому я решил изменить этот массив на одну из двух структур данных:
- Массив указателей на элементы
- Массив индексов для другого массива, содержащего фактические элементы
Таким образом, я буду делать только вставки и удаления в массиве индекса / указателя, который намного дешевле.
Вторая структура данных намного сложнее, чем первая, она потребует дополнительных операций, чтобы избежать перераспределения в массиве элементов, но она сохранит все элементы в той же области памяти, что, я думаю, будет лучше для кэш-памяти процессора.
Мой вопрос, какой путь лучше? И какой лучший способ реализовать 2 варианта, чтобы все элементы массива находились в одной области памяти?