Sto lavorando a un progetto (in Scala), in cui ho bisogno di manipolare alcuni numeri molto grandi; troppo grande per essere rappresentato dai tipi interi. Java fornisce le classi BigInteger e BigDecimal (e scala fornisce un bel wrapper sottile intorno a loro). Tuttavia, ho notato che queste librerie sono sostanzialmente più lente di altre librerie di precisione arbitrarie che ho usato in passato (ad esempio http://www.ginac.de/CLN/) e la differenza di velocità sembra più grande di quella che può essere attribuita alla sola lingua.Librerie di precisione arbitrarie JVM
Ho eseguito alcuni profili del mio programma e il 44% del tempo di esecuzione è stato speso nel metodo di moltiplicazione BigInteger. Mi piacerebbe velocizzare il mio programma un po ', quindi sto cercando un'opzione più veloce ed efficiente della classe BigInteger (e del suo wrapper Scala). Ho esaminato LargeInteger (da JScience) e Aint (da Afloat). Tuttavia, entrambi sembrano eseguire più lentamente rispetto alla classe BigInteger standard.
Qualcuno sa di una libreria matematica di precisione arbitraria Java (o disponibile sulla JVM) con un focus sulla moltiplicazione e l'aggiunta di interi ad alte prestazioni?
Sembra che ci sia un qualche buona esperienza qui http://stackoverflow.com/questions/277309/java-floating-point-high-precision-library – thoredge
Grazie. Tuttavia, ho visto questa domanda e ho provato entrambe le librerie JScience e AFloat (che, come ho detto, sembrano essere più lente di BigInteger). Ciò potrebbe essere dovuto al fatto che i miei numeri si trovano nella zona crepuscolare in termini di dimensioni (circa 1500 cifre). Ad ogni modo, so che le operazioni possono essere molto più veloci (come il codice C++ ha ottenuto questo risultato). Oltre alla differenza linguistica, potrebbe anche essere in gioco la mutabilità (rispetto all'immutabile impli Java). – nomad