从文档中,我知道 Nim 数组具有在编译时确定的固定长度,而 seqs 具有可变长度。
我注意到 seqs 有更多的内置工具。例如,在 sequtils
模块,map
可以接受一个数组,但无论如何都会返回一个 seq,并且 all
或 any
不适用于数组。而且我看不到将固定大小的序列转换为数组的简单方法。
所以我的问题是:使用数组有什么好处?他们提供更快的访问吗?
最佳答案
尼姆seq
实际上是一个指向动态数组的指针(由 seq 的长度和容量的两个单词加上实际数据组成)。
一个 seq
需要另一个间接级别,额外的堆分配,并且有额外的开销(存储长度和容量所需的内存,加上当前未使用的任何“浪费”内存)。因此,如果您确切知道需要多少内存,则可以通过使用数组而不是 seq 来节省时间和空间。
关于arrays - 尼姆 : advantage of using array over seq?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47739511/