簡體   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