自定义基本类型中的最大位数?

时间:2019-04-15 07:41:28

标签: types julia

我现在理解这不是一个好主意,只是为了精确起见,这是自定义基本类型中的最大位数(documentation只是必须是8的倍数):< / p>

primitive type My10MBBuffer 83886080 end

(这将导致invalid number of bits in primitive type My10MBBuffer错误)

我认为该错误的茱莉亚来源是:

   ssize_t nb = jl_unbox_long(vnb);
    if (nb < 1 || nb >= (1 << 23) || (nb & 7) != 0)
        jl_errorf("invalid number of bits in primitive type %s",
jl_symbol_name((jl_sym_t*)name));

[编辑:]

根据试验和错误,该数字似乎是8388600(8 *(1024 * 1024-1))位。

为什么?为什么使用自定义基本类型托管大量数据会很糟糕?

1 个答案:

答案 0 :(得分:1)

您可以为基本类型设置的最大位数为

WEB-INF\lib

此限制来自代码

8388600 bits

在茱莉亚(Julia)源代码的interpreter.c中。

if (nb < 1 || nb >= (1 << 23) || (nb & 7) != 0) jl_errorf("invalid number of bits in primitive type %s", jl_symbol_name((jl_sym_t*)name)); 是1 MB(1024 * 1024字节)。因此,您的原始类型必须至少小于1 MB少一个字节,这使得最大8388600位。

至于为什么选择这个作为限制,我只能猜测选择了1 MB,因为大多数操作系统上的堆栈大小并不是很大。 (默认为1或2 MB)

我想如果您更改了上面的代码重新编译了Julia,则可以调整此限制,除了堆栈大小,此限制应为1 MB之外,我看不到任何其他原因,尽管我真的不知道为什么您会这样做想要那个。