首页 > 解决方案 > 为什么在 Elixir 中访问元组的大小很快?

问题描述

我在很多地方读到过,在 Elixir 中查找元组的大小非常快,因为元组存储在连续的内存单元中。但是,for 列表的成本更高,因为需要遍历整个列表才能知道列表的长度。

我不明白如何通过位于连续的内存单元中,找出元组的大小会更快。你不是必须遍历每个单元格吗?

标签: elixir

解决方案


元组大小被存储。列表的长度不是。

元组也是一个装箱值,因此它由一个装箱指针(1 个字)指向一个ARITYVAL标题(1 个字),然后出现元组的元素。
标头的 arity 部分ARITYVAL是一个 26 位(在 32 位系统上)整数值,其中包含 tuple 中元素的数量
— https://blog.edfine.io/blog/2016/06/28/erlang-data-representation/


推荐阅读