MATREAD和READ之间有什么区别?

TMA*_*MAN 4 universe u2

我需要了解MATREAD和READ之间的区别?并请提供一个简单的例子,说明在哪里以及如何使用它.

Dan*_*ath 8

READ将从磁盘读取记录并将其作为a返回Dynamic Array. MATREAD将从磁盘读取记录并将其作为a返回Dimensioned Array.

因此,真正的诀窍是找出哪种数组类型更适用于您的用例.

A Dynamic Array本质上是一个字符串,它使用某些字节标记来分隔每个元素(属性/多值/子值).它非常易于使用,不需要预先声明或调整大小.在缺点方面,if可以比a慢Dimensioned Array,主要用于大型记录或者当你从数组中随机检索属性时 - 我认为是O(n log n).顺序访问已经过优化,接近Dimensioned Arrays速度.

A Dimensioned Array本质上是一个字符串数组(或者Dynamic Arrays在UniVerse的情况下).它将每个属性读入数组位置.然后,每个数组位置将Dynamic Array仅包含该属性的多值/子值位置.Dimensioned Arrays要求您预先声明它们和阵列位置的数量.根据您运行的风格,如果您尝试读取具有比数组大小更多的属性的记录,则可能会导致运行时错误.另一方面,无论您的访问模式如何,从数组中检索属性都是O(1).

  • 丹 - 很好的解释.我认为动态数组访问是O(n).快速测试结果如下:"访问位置的时间:50000 = 0 ms.访问位置的时间:100000 = 1毫秒.访问位置的时间:200000 = 3毫秒.访问位置的时间:500000 = 8毫秒.访问位置的时间:1000000 = 15 ms.访问位置的时间:5000000 = 76 ms.访问位置的时间:10000000 = 153 ms.最后几个示例显示了非常好的线性进展. (2认同)