哪些程序/算法在运行时改变其数据结构的表示以获得更好的性能?
上下文:数据结构“定义”如何在计算机内存中构造和表示真实世界的概念。对于不同类型的计算,应该/可以使用不同的数据结构来实现可接受的性能(例如,链接列表与数组实现)。
自适应的数据结构是根据具体的使用模式(例如,自平衡树)改变内部状态的数据结构。这些更改是内部的,即取决于数据。此外,这些变化是预期的设计。
其他算法可以从表示的外部变化中受益。例如,在矩阵乘法中,转置“第二矩阵”(使缓存被更有效地使用)是一种众所周知的性能技巧。这实际上是将矩阵表示从主要行更改为列的主要顺序。由于"A“与" transposed (A)”不同,第二矩阵在乘法后又被转置,以保持程序语义上的正确性。
第二个例子是在程序启动时使用链接列表来填充“数据结构”,并在列表的内容变得“稳定”时更改为基于数组的实现。
我正在寻找与其他示例程序有类似经验的程序员,这些程序在应用程序中执行表示的外部更改,以获得更好的性能。因此,数据结构的表示(选择的实现)在运行时被更改为程序的显式部分。
发布于 2014-07-09 22:11:34
在许多情况下,为了实现更有效的算法,需要对输入表示进行转换。我甚至要说,这是一个重要的方式来思考设计有效的算法在一般情况下。我想到的一些例子是:
当然,除了这些例子外,还有很多例子,但我试图想出一些不同的例子。
https://stackoverflow.com/questions/24553973
复制相似问题