哪些程序/算法在运行时更改其数据结构的表示以获得更好的性能?
背景: 数据结构“定义”了现实世界的概念在计算机内存中的结构和表示方式。对于不同类型的计算,应该/可以使用不同的数据结构来实现可接受的性能(例如,链表与数组实现)。
自适应(参见自更新)数据结构是根据具体使用模式(例如,自平衡树)改变其内部状态的数据结构。这些变化是内部的,即取决于数据。此外,这些变化是设计预期的。
其他算法可以从表示的外部变化中受益。例如,在矩阵乘法中,转置“第二个矩阵”是一个众所周知的性能技巧(这样可以更有效地使用缓存)。这实际上是将矩阵表示从行优先更改为列优先。因为“A”与“Transposed(A)”不同,第二个矩阵在乘法之后再次转置以保持程序语义正确。
第二个例子是在程序启动时使用链表来填充“数据结构”并在列表的内容变得“稳定”时更改为基于数组的实现。
我正在寻找与其他示例程序有类似经验的程序员,这些示例程序在他们的应用程序中执行外部表示更改以获得更好的性能。因此,数据结构的表示(选择的实现)在运行时更改为程序的显式部分。