繁体   English   中英

将BigIntegers打印到文本文件

[英]Printing BigIntegers to text files

我在Java中计算非常大的因子。但是当我尝试将它们写入文本文件时,它需要花费太多时间。 我正在使用这种方法打印数字。

PrintWriter writer = new PrintWriter(index + "!.txt", "UTF-8");
writer.println(number);
writer.close();

打印10,000! 到文本文件需要194毫秒。 文件大小为35.7 kB。

打印100,000! 到文本文件需要24,314毫秒。 文件大小为456.6 kB。

我认为这个文件大小的速度太慢了。 如何在几秒钟内打印数百万位数的BigIntegers? 是否有更快的方法或任何方式我可以优化这个?

您观察到的时间是由BigInteger.toString()引起的,而不是写入文件。

将looong BigInteger转换为十进制(或任何其他基数)数字序列是一个繁琐的过程,涉及基础的looong int []的looong划分,并以相当环境的方式组成结果字符串,甚至使用StringBuilder 。 (我刚刚检查过:1.8使用了改进的算法,但是35k或456k的数字还有很长的路要走。)

我曾经遇到过这个问题并最终编写了我自己的BigInteger,使用的表示法可以非常快速地转换为基数10。

如果您选择其他库,请确保它允许修改对象的操作(而不是返回新对象)。 如果您希望频繁/长时间转换为十进制字符串,请尝试找到一个代表基数中10的整数幂的数字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM