Одна вещь, которую я заметил, заключается в том, что FastR не использует OpenBLAS по умолчанию. Возможно, это может быть установлено по умолчанию, поскольку BLAS довольно неэффективен по сравнению с OpenBLAS.
Рассмотрим код ниже:
M <- matrix(runif(n = 5000^2, 0, 1), 5000, 5000)
inverse_loop <- function(matriz, n = 10){
for (i in 1:n){
solve(matriz)
}
}
system.time(inverse_loop(M))
Примечание : Это простой код, который делает только повторные обращения большой матрицы.
Тесты
GNU R с OPenBLAS:
> sessionInfo()
R version 3.5.3 (2019-03-11)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Manjaro Linux
Matrix products: default
BLAS/LAPACK: /opt/OpenBLAS/lib/libopenblas_haswellp-r0.3.5.so
Результат
[pedro@pedro-de Downloads]$ Rscript code.R
user system elapsed
98.037 6.225 30.743
R + GraalVM (FastR):
> sessionInfo()
FastR version 3.5.1 (2018-07-02)
Platform: x86_64-unknown-linux-gnu (64-bit)
Running under: Manjaro Linux
Matrix products: NULL
BLAS: /usr/lib/jvm/java-8-graal/jre/languages/R/lib/libRblas.so
LAPACK: /usr/lib/jvm/java-8-graal/jre/languages/R/lib/libRlapack.so
Результат
./Rscript /home/pedro/Downloads/code.R
user system elapsed
910.810 6.393 928.996