Slow down using the compiler

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Slow down using the compiler

Colin Gillespie
Dear All,

In R 3.4.2 (Linux), the compiler seems to have regressed:

$ R --vanilla
g = function() {
  N = 1e7; ans = numeric(N)
  system.time({for (j in 1:N) ans[j] = 1})
}
g()
#   user  system elapsed
 # 4.272   0.000   4.272

g1 = compiler::cmpfun(g)
g1()
#   user  system elapsed
# 4.232   0.004   4.235

Running the above code in Windows 3.3.1, g() takes the same time, but g1()
takes around 0.5 seconds.

Removing the function wrapper we have

N = 1e7; ans = numeric(N)
system.time({for (j in 1:N) ans[j] = 1})
#   user  system elapsed
 # 0.304   0.000   0.304
compiler::enableJIT(0)
#[1] 3
N = 1e7; ans = numeric(N)
system.time({for (j in 1:N) ans[j] = 1})
#   user  system elapsed
 # 5.448   0.000   5.446

Best wishes

Colin

------------------

> sessionInfo()
R version 3.4.2 (2017-09-28)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04.3 LTS

Matrix products: default
BLAS: /usr/lib/atlas-base/atlas/libblas.so.3.0
LAPACK: /usr/lib/atlas-base/atlas/liblapack.so.3.0

locale:
 [1] LC_CTYPE=en_GB.UTF-8       LC_NUMERIC=C
 [3] LC_TIME=en_GB.UTF-8        LC_COLLATE=en_GB.UTF-8
 [5] LC_MONETARY=en_GB.UTF-8    LC_MESSAGES=en_GB.UTF-8
 [7] LC_PAPER=en_GB.UTF-8       LC_NAME=C
 [9] LC_ADDRESS=C               LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

loaded via a namespace (and not attached):
[1] compiler_3.4.2

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Reply | Threaded
Open this post in threaded view
|

Re: Slow down using the compiler

luke-tierney
This is due to a temporary change to not compile assignments, like
your loop body, that appear within an argument. This is to work around
a bug elsewhere in R that will take some time to fix. Once that fix is
available these assignments will again be compiled.

Best,

On Fri, 27 Oct 2017, Colin Gillespie wrote:

> Dear All,
>
> In R 3.4.2 (Linux), the compiler seems to have regressed:
>
> $ R --vanilla
> g = function() {
>  N = 1e7; ans = numeric(N)
>  system.time({for (j in 1:N) ans[j] = 1})
> }
> g()
> #   user  system elapsed
> # 4.272   0.000   4.272
>
> g1 = compiler::cmpfun(g)
> g1()
> #   user  system elapsed
> # 4.232   0.004   4.235
>
> Running the above code in Windows 3.3.1, g() takes the same time, but g1()
> takes around 0.5 seconds.
>
> Removing the function wrapper we have
>
> N = 1e7; ans = numeric(N)
> system.time({for (j in 1:N) ans[j] = 1})
> #   user  system elapsed
> # 0.304   0.000   0.304
> compiler::enableJIT(0)
> #[1] 3
> N = 1e7; ans = numeric(N)
> system.time({for (j in 1:N) ans[j] = 1})
> #   user  system elapsed
> # 5.448   0.000   5.446
>
> Best wishes
>
> Colin
>
> ------------------
>
>> sessionInfo()
> R version 3.4.2 (2017-09-28)
> Platform: x86_64-pc-linux-gnu (64-bit)
> Running under: Ubuntu 16.04.3 LTS
>
> Matrix products: default
> BLAS: /usr/lib/atlas-base/atlas/libblas.so.3.0
> LAPACK: /usr/lib/atlas-base/atlas/liblapack.so.3.0
>
> locale:
> [1] LC_CTYPE=en_GB.UTF-8       LC_NUMERIC=C
> [3] LC_TIME=en_GB.UTF-8        LC_COLLATE=en_GB.UTF-8
> [5] LC_MONETARY=en_GB.UTF-8    LC_MESSAGES=en_GB.UTF-8
> [7] LC_PAPER=en_GB.UTF-8       LC_NAME=C
> [9] LC_ADDRESS=C               LC_TELEPHONE=C
> [11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C
>
> attached base packages:
> [1] stats     graphics  grDevices utils     datasets  methods   base
>
> loaded via a namespace (and not attached):
> [1] compiler_3.4.2
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

--
Luke Tierney
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa                  Phone:             319-335-3386
Department of Statistics and        Fax:               319-335-3017
    Actuarial Science
241 Schaeffer Hall                  email:   [hidden email]
Iowa City, IA 52242                 WWW:  http://www.stat.uiowa.edu

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel