我是新来的,请原谅我新手犯的错误。我目前正在做我的一个小项目,我正在处理长度在4万甚至更长的数字。
我目前正在使用BigInteger来处理这些值,我需要一些执行速度更快的东西。我读到过BigInteger在它的实现中使用了一个整数数组,我需要知道的是BigInteger是像1- 9那样使用这个数组中的每个索引来表示每个小数点,还是使用了更有效的方法。
我问这个是因为我已经有了一个使用位操作的实现,这使得它在内存和处理方面更有效率。
所以最后一个问题是- BigInteger已经足够有效了吗,我应该仅仅依靠它吗?最好知道这一点,而不是对其进行不必要的测试,因为这将花费大量时间。
谢谢。
发布于 2018-10-08 22:50:10
至少在OracleJava8和OpenJDK 8中,它不会为每个int
存储一个十进制数字。它在int[]
中为每个32位int
存储完整的32位部分,可以使用its source code查看。
位操作对它来说很快,因为它是一个符号大小的值,并且大小就像你所期望的那样被打包存储,只要确保你使用the relevant BigInteger
bitwise methods而不是实现你自己的即可。
如果您仍然需要更高的速度,可以尝试像GMP这样的工具,不过要知道它使用的是LGPL或GPL许可证。在Java之外使用它也会更好。
https://stackoverflow.com/questions/52704490
复制相似问题