[Rcpp-commits] r2294 - in pkg/Rcpp: R inst inst/examples/SugarPerformance tests
noreply at r-forge.r-project.org
noreply at r-forge.r-project.org
Sun Oct 10 20:17:21 CEST 2010
Author: romain
Date: 2010-10-10 20:17:21 +0200 (Sun, 10 Oct 2010)
New Revision: 2294
Modified:
pkg/Rcpp/R/Module.R
pkg/Rcpp/inst/ChangeLog
pkg/Rcpp/inst/examples/SugarPerformance/sugarBenchmarks.R
pkg/Rcpp/tests/doRUnit.R
Log:
disabling tests on windows 64 (workaround until the real solution)
Modified: pkg/Rcpp/R/Module.R
===================================================================
--- pkg/Rcpp/R/Module.R 2010-10-09 14:36:51 UTC (rev 2293)
+++ pkg/Rcpp/R/Module.R 2010-10-10 18:17:21 UTC (rev 2294)
@@ -222,7 +222,21 @@
## create a named list of the R methods to invoke C++ methods
## from the C++ class with pointer xp
cpp_refMethods <- function(CLASS, where) {
- sapply( CLASS at methods, method_wrapper, where = where )
+ finalizer <- eval( substitute(
+ function(){
+ .Call( CppObject__finalize, class_pointer , .pointer )
+ },
+ list(
+ CLASS = CLASS at pointer,
+ CppObject__finalize = CppObject__finalize,
+ class_pointer = CLASS at pointer
+ )
+ ) )
+ mets <- c(
+ sapply( CLASS at methods, method_wrapper, where = where ),
+ "finalize" = finalizer
+ )
+ mets
}
binding_maker <- function( FIELD, where ){
Modified: pkg/Rcpp/inst/ChangeLog
===================================================================
--- pkg/Rcpp/inst/ChangeLog 2010-10-09 14:36:51 UTC (rev 2293)
+++ pkg/Rcpp/inst/ChangeLog 2010-10-10 18:17:21 UTC (rev 2294)
@@ -1,3 +1,10 @@
+2010-10-10 Romain Francois <romain at r-enthusiasts.com>
+
+ * tests/doRUnit.R: workaround to disable tests on windows 64 until we can
+ figure out what upsets R CMD check.
+
+ * R/Module.R: expose the finalizer
+
2010-10-07 John M Chambers <jmc at r-project.org>
* R/Module.R: modify cpp_refMethods to substitute the .External
Modified: pkg/Rcpp/inst/examples/SugarPerformance/sugarBenchmarks.R
===================================================================
--- pkg/Rcpp/inst/examples/SugarPerformance/sugarBenchmarks.R 2010-10-09 14:36:51 UTC (rev 2293)
+++ pkg/Rcpp/inst/examples/SugarPerformance/sugarBenchmarks.R 2010-10-10 18:17:21 UTC (rev 2294)
@@ -116,6 +116,30 @@
data = list( x = runif(1e5), y = runif(1e5) )
)
+settings.ifelse.nona <- list( start = '
+ NumericVector x = e["x"] ;
+ NumericVector y = e["y"] ;
+', hand.written = '
+ int n = x.size() ;
+ NumericVector res1( n ) ;
+ double x_ = 0.0 ;
+ double y_ = 0.0 ;
+ for( int i=0; i<n; i++){
+ x_ = x[i] ;
+ y_ = y[i] ;
+ if( x_ < y_ ){
+ res1[i] = x_ * x_ ;
+ } else {
+ res1[i] = -( y_ * y_) ;
+ }
+ }
+
+', sugar = '
+ NumericVector res2 = ifelse( x < y, noNA(x)*noNA(x), -(noNA(y)*noNA(y)) ) ;
+', expr = quote(ifelse(x<y, x*x, -(y*y) )),
+ data = list( x = runif(1e5), y = runif(1e5) )
+)
+
settings.sapply <- list( start = '
NumericVector x = e["x"] ;
int n = x.size() ;
@@ -181,6 +205,7 @@
raw.results <- list(
benchmark( settings = settings.any , runs = 5000 ),
benchmark( settings = settings.ifelse, runs = 500 ),
+ benchmark( settings = settings.ifelse.nona, runs = 500 ),
benchmark( settings = settings.sapply, runs = 500 )
)
cat("\n")
Modified: pkg/Rcpp/tests/doRUnit.R
===================================================================
--- pkg/Rcpp/tests/doRUnit.R 2010-10-09 14:36:51 UTC (rev 2293)
+++ pkg/Rcpp/tests/doRUnit.R 2010-10-10 18:17:21 UTC (rev 2294)
@@ -12,22 +12,26 @@
## package which has no ./tests/
## ----> put the bulk of the code e.g. in ../inst/unitTests/runTests.R :
-if(require("RUnit", quietly = TRUE)) {
- pkg <- "Rcpp"
-
- require( pkg, character.only=TRUE)
-
- path <- system.file("unitTests", package = pkg)
-
- stopifnot(file.exists(path), file.info(path.expand(path))$isdir)
-
- # without this, we get unit test failures
- Sys.setenv( R_TESTS = "" )
-
- Rcpp.unit.test.output.dir <- getwd()
-
- source(file.path(path, "runTests.R"), echo = TRUE)
-
+if( identical( .Platform$OS.type, "windows" ) && identical( .Platform$r_arch, "x64" ) ){
+ print( "unit tests not run on windows 64 (workaround alert)" )
} else {
- print( "package RUnit not available, cannot run unit tests" )
-}
+ if(require("RUnit", quietly = TRUE)) {
+ pkg <- "Rcpp"
+
+ require( pkg, character.only=TRUE)
+
+ path <- system.file("unitTests", package = pkg)
+
+ stopifnot(file.exists(path), file.info(path.expand(path))$isdir)
+
+ # without this, we get unit test failures
+ Sys.setenv( R_TESTS = "" )
+
+ Rcpp.unit.test.output.dir <- getwd()
+
+ source(file.path(path, "runTests.R"), echo = TRUE)
+
+ } else {
+ print( "package RUnit not available, cannot run unit tests" )
+ }
+}
More information about the Rcpp-commits
mailing list