Nim:使用数组优于 seq 的优势?

Nim: advantage of using array over seq?

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

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

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

一个Nim seq实际上是一个指向动态数组的指针(由两个字组成,分别表示seq的长度和容量,加上实际数据)。

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