Tôi đang làm việc trên một dự án (ở Scala), nơi tôi có nhu cầu thao tác một số lượng rất lớn; quá lớn để được thể hiện bằng các loại tích phân. Java cung cấp các lớp BigInteger và BigDecimal (và scala cung cấp một wrapper mỏng đẹp xung quanh chúng). Tuy nhiên, tôi nhận thấy rằng các thư viện này chậm hơn đáng kể so với các thư viện chính xác tùy ý khác mà trước đây tôi đã sử dụng (ví dụ: http://www.ginac.de/CLN/) và chênh lệch tốc độ có vẻ lớn hơn những gì có thể được quy cho ngôn ngữ.Thư viện chính xác tùy ý JVM
Tôi đã thực hiện một số thông tin về chương trình của mình và 44% thời gian thực hiện đang được sử dụng trong phương pháp nhân BigInteger. Tôi muốn tăng tốc độ chương trình của tôi một chút, vì vậy tôi đang tìm kiếm một lựa chọn nhanh hơn và hiệu quả hơn so với lớp BigInteger (và trình bao bọc Scala của nó). Tôi đã xem xét LargeInteger (từ JScience) và Aint (từ Afloat). Tuy nhiên, cả hai dường như hoạt động chậm hơn so với lớp BigInteger tiêu chuẩn.
Có ai biết thư viện toán học chính xác tùy ý Java (hoặc có sẵn trên JVM) có tập trung vào phép nhân và phép cộng số nguyên hiệu suất cao không?
Dường như có một số trải nghiệm tốt ở đây http://stackoverflow.com/questions/277309/java-floating-point-high-precision-library – thoredge
Cảm ơn bạn. Tuy nhiên, tôi đã nhìn thấy câu hỏi này và đã thử cả thư viện JScience và AFloat (như tôi đã nói, có vẻ chậm hơn BigInteger). Điều này có thể là do số của tôi nằm trong vùng hoàng hôn về kích thước (~ 1500 chữ số). Dù bằng cách nào, tôi biết các hoạt động có thể nhanh hơn nhiều (như mã C++ đạt được điều này). Bên cạnh sự khác biệt ngôn ngữ, khả năng thay đổi (so với Java implable không thay đổi) cũng có thể được chơi. – nomad