我面临一个场景,需要计算一些庞大的数学表达式。这些表达式本身很简单,即只有传统的BODMAS基础,但作为操作数出现的数字非常大,高达1000位数。我知道java.math模块中的BigInteger类,但正在寻找另一种方式,使计算速度更快。作为一个在Java中仍在摸索的人,任何关于此方面的指针或建议都将是极大的帮助。
此致 p1nG
此致 p1nG
在寻找更优化的解决方案之前,建议使用BigInteger进行一些测试计算并对结果进行性能分析,看它是否适合您的需求。
既然你说你是Java的新手,我建议你使用BigInteger和BigDecimal,除非你想自己编写任意大的数字处理程序。 BigInteger和BigDecimal对于大多数用途来说都足够快。我在处理百万位数的数字时才遇到过速度问题。
除非你有不使用BigInteger的特定需求。
BigInteger("7").add(BigInteger("3"))
。 - Chinmay Kanchi首先正确编写程序(使用BigFoo),然后确定是否需要优化。
BigInteger/BigFloat将是您可能获得的广义数学最优化的实现。
如果您想要更快,您可以尝试编写汇编语言来使用位移模式进行专门的数学计算(例如,除以2往往是一个简单的右移),但如果您正在进行多种类型的方程式计算,那么这将非常不切实际。
与int相比,BigInteger只是慢了一些,但对于超过64位的数字操作,它可能是您可能获得的最佳选择,而不需要转到另一种语言--即使这样,除非使用汇编语言,否则您可能不会得到太大的改进...
我很惊讶拥有1000位数字的方程式有实际应用(除了加密之外)。 您能否解释一下您正在做什么以及您的速度要求是什么?