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

Adr*_*ien 2 arrays seq nim-lang

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

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

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

Rei*_*nds 6

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

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