【问题标题】:Is there a size limit for Erlang integers?Erlang 整数有大小限制吗?
【发布时间】:2016-09-01 10:04:35
【问题描述】:

我知道 Erlang 有任意大小的整数,但是其中一种标准实现有最大限制吗?如果是这样,是什么?

【问题讨论】:

    标签: erlang beam


    【解决方案1】:

    Erlang 使用bignum arithmetic,并且 Erlang 中的整数受机器上可用内存的限制。 实际上,在 Erlang 中 Integer 的大小是没有限制的。 看看这个文件:http://erlang.org/doc/efficiency_guide/advanced.html 它对限制有更详细的解释。

    【讨论】:

    • 似乎限制是 VM 内存,在 32 位系统上为 536,870,911 字节 (537MB),在 64 位系统上为 2,305,843,009,213,693,951 字节 (2.3EB)。由于我们可以将数据存储在 32 位或 64 位字段的前 28 位或 60 位中,因此在 64 位机器上给定 2.3EB 的 RAM 时,我们应该能够存储大约 2^2^63.9 或 10^10^18.7 的整数,或 10^10^9,给定 32 位机器上的半 GB 内存。
    • 我喜欢使用 bignum,但是由于标记,足够小的整数只需要 1 个单词(没有内存开销)。
    【解决方案2】:

    在 32 位架构上:-134217729 < i < 134217728(28 位)。

    在 64 位架构上:-576460752303423489 < i < 576460752303423488(60 位)。

    【讨论】:

    • 这些是小整数的限制。我问的是任意大小的大整数。
    猜你喜欢
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多