arrays - 尼姆 : advantage of using array over seq?

标签 arrays seq nim-lang

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

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

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

最佳答案

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

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

关于arrays - 尼姆 : advantage of using array over seq?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47739511/

相关文章:

nim-lang - 如何在 Nim 中列出目录中的项目

javascript - JavaScript 关联数组的长度

java - : i++, 或 i+c(其中 c=0,1,2,...)哪个更有效

java - 使用 jool java 8 使用 Seq、Tuple 和 Streams 进行左外连接

parallel-processing - 为什么我们没有通过 PSeq 获得性能提升?

nim-lang - 使用递归和 openarray 时 Nim 程序崩溃

python - 在 nim 中比较两个字符串的函数比 python 慢

c++ - 使用 sizeof() 计算数组大小

java - 无法更新数组内容

scala - Scala 不可变索引序列是如何实现的,它们的操作复杂度如何?