Estoy trabajando en un proyecto (en Scala), donde tengo la necesidad de manipular algunos números muy grandes; demasiado grande para ser representado por los tipos integrales. Java proporciona las clases BigInteger y BigDecimal (y scala proporciona un buen envoltorio fino a su alrededor). Sin embargo, noté que estas bibliotecas son sustancialmente más lentas que otras bibliotecas de precisión arbitraria que he usado en el pasado (es decir, http://www.ginac.de/CLN/), y la diferencia de velocidad parece ser mayor que lo que se puede atribuir solo al lenguaje.Bibliotecas de Precisión Arbitrarias JVM
Hice algunos perfiles de mi programa, y el 44% del tiempo de ejecución se está gastando en el método de multiplicación BigInteger. Me gustaría acelerar un poco mi programa, así que estoy buscando una opción más rápida y más eficiente que la clase BigInteger (y su envoltorio Scala). He consultado LargeInteger (de JScience) y Aint (de Afloat). Sin embargo, ambos parecen funcionar más lentamente que la clase estándar de BigInteger.
¿Alguien sabe de una biblioteca matemática de precisión arbitraria Java (o disponible en la JVM) con un enfoque en la multiplicación y suma de enteros de alto rendimiento?
Parece que hay un poco de buena experiencia aquí http://stackoverflow.com/questions/277309/java-floating-point-high-precision-library – thoredge
Gracias. Sin embargo, he visto esta pregunta y he intentado con las bibliotecas JScience y AFloat (que, como dije, parecen ser más lentas que BigInteger). Esto puede deberse a que mis números están en la zona crepuscular en términos de tamaño (~ 1500 dígitos). De cualquier manera, sé que las operaciones pueden ser mucho más rápidas (ya que el código C++ logró esto). Además de la diferencia de idioma, la mutabilidad (frente a las impls de Java inmutables) también podría estar en juego. – nomad