Pracuję nad projektem (w Scali), w którym potrzebuję manipulować bardzo dużymi liczbami; zbyt duża, aby można ją było reprezentować za pomocą typów integralnych. Java zapewnia klasy BigInteger i BigDecimal (a scala zapewnia ładne cienkie opakowanie wokół nich). Zauważyłem jednak, że te biblioteki są znacznie wolniejsze niż inne dowolne biblioteki precyzyjne, z których korzystałem w przeszłości (tj. http://www.ginac.de/CLN/), a różnica prędkości wydaje się większa niż to, co można przypisać samemu językowi.JVM Arbitralne Precyzyjne Biblioteki
Zrobiłem profilowanie mojego programu, a 44% czasu wykonania zostało wydane w metodzie multiplikacji BigInteger. Chciałbym nieco przyspieszyć mój program, więc szukam szybszej i wydajniejszej opcji niż klasa BigInteger (i opakowanie Scala). Spojrzałem na LargeInteger (od JScience) i Aint (z Afloat). Jednak oba wydają się działać wolniej niż standardowa klasa BigInteger.
Czy ktoś wie o dowolnej bibliotece matematycznej precyzyjnej Javy (lub dostępnej w JVM) z naciskiem na mnożenie i dodawanie liczb całkowitych o wysokiej wydajności?
Wydaje się być niektóre dobre doświadczenie tutaj http://stackoverflow.com/questions/277309/java-floating-point-high-precision-library – thoredge
Dzięki. Jednak widziałem to pytanie i próbowałem zarówno bibliotek JScience, jak i AFloat (które, jak powiedziałem, wydają się wolniejsze niż BigInteger). Może to być spowodowane tym, że moje liczby znajdują się w strefie zmierzchu pod względem wielkości (~ 1500 cyfr). Tak czy siak, wiem, że operacje mogą być znacznie szybsze (jak osiągnął to kod C++). Oprócz różnicy językowej, zmienność (w przeciwieństwie do niezmiennych implikacji Java) również może być w grze. – nomad