我正在处理非常大的bigint
数字,我需要将它们写入磁盘并稍后再读取它们,因为它们一次无法全部放入内存中。
当前的 Chapel 实现首先将 a 转换bigint
为 a string
,然后将其写入string
磁盘 [1]。对于大整数来说,这需要很长时间。
var outputFile = open("outputPath", iomode.cwr);
var writer = outputFile.writer();
writer.write(reallyLargeBigint);
writer.close();
outputFile.close();
有没有办法使用 GMP 的mpz_out_raw()
/ mpz_inp_raw()
[2] 或mpz_export()
/ mpz_import()
[3] 或其他类似的方式将bigint
' 的字节直接转储到磁盘而不事先转换为字符串,然后将字节读回bigint
对象?
这也适用于bigint
数组吗?
如果在当前状态下不可能,如何将这样的功能添加到 Chapel 的标准库中?
[1] https://github.com/chapel-lang/chapel/blob/master/modules/standard/BigInteger.chpl#L346
[2] https://gmplib.org/manual/I_002fO-of-Integers.html
[3] https://gmplib.org/manual/Integer-Import-and-Export.html