Nim:在seq上使用数组的优势?

时间:2017-12-10 13:50:23

标签: arrays seq nim

从文档中我知道Nim数组在编译时确定了固定长度,而seqs的长度可变。

我注意到seqs有更多的内置工具。例如,在sequtils模块中,map可以采用数组,但无论如何都会返回seq,而allany不适用于数组。而且我没有看到将固定大小的seq转换为数组的简单方法。

所以我的问题是:使用数组有什么好处?它们提供更快的访问吗?

1 个答案:

答案 0 :(得分:6)

Nim seq实际上是指向动态数组的指针(由seq的长度和容量以及实际数据组成的两个单词)。

seq需要另一级别的间接,额外的堆分配,并且还有额外的开销(存储长度和容量所需的内存,以及任何"浪费的"当前不存在的内存用过的)。因此,如果您确切知道需要多少内存,则可以使用数组而不是seq来节省时间和空间。