Какие программы/алгоритмы изменяют представление своей структуры данных во время выполнения, чтобы получить производительность счетчика?
Контекст: Структуры данных "определяют", как структуры реального мира структурируются и представлены в компьютерной памяти. Для разных видов вычислений для достижения приемлемой производительности//может использоваться другая структура данных (например, реализация связанных ссылок и массивов).
Самоадаптивные (например, самообновляющиеся) структуры данных представляют собой структуры данных, которые изменяют свое внутреннее состояние в соответствии с конкретным шаблоном использования (например, деревьями, которые балансируют самостоятельно). Эти изменения являются внутренними, то есть в зависимости от данных. Более того, эти изменения ожидаются по дизайну.
Другие алгоритмы могут выиграть от внешнего изменения представления. В Например, матричное умножение - это хорошо знакомый трюк производительности для переноса "второй матрицы" (такой, что кеши используются более эффективно). Это фактически изменяет представление матрицы от основного номера строки к главному порядку столбца. Поскольку "A" не совпадает с "Transposed (A)", вторая матрица снова переносится после умножения, чтобы сохранить программу семантически корректной.
Во втором примере используется связанный список при запуске программы, чтобы заполнить "структуру данных" и перейти к реализации на основе массива, когда содержимое списка станет "стабильным".
Я ищу программистов, которые имеют аналогичный опыт с другими примерами программ, где внешнее изменение представления выполняется в их приложении, чтобы иметь лучшую производительность. Таким образом, когда представление (выбранная реализация) структуры данных изменяется во время выполнения как явная часть программы.