FYI, you're much more likely to get a response/see actions on this if you report issues using the most recent stable version (R v2.10.1) and/or even the developers version (R v2.11.0). You're current version is, as you see, more than 2 years old. It is likely that the threshold to compare the code of your version with the latest one etc is to large for someone to be bothered.
/Henrik On Wed, Feb 10, 2010 at 2:45 PM, <manuel.lopez-iba...@ulb.ac.be> wrote: > Full_Name: Manuel López-Ibáñez > Version: R version 2.6.2 (2008-02-08) > OS: linux-gnu > Submission from: (NULL) (164.15.10.156) > > > This is only relevant for CPU intensive child processes. Otherwise, the > problem > is not obvious. > > Therefore, we need a CPU intensive program like this one: > > /************************************/ > /*** Compile with: gcc -o timer-test -O0 timer-test.c -lm */ > #include <stdio.h> > #include <stdlib.h> > #include <math.h> > > double alpha, beta; > int size = 1000; > > #define WORK_create_matrix(TYPEOFMATRIX) \ > \ > TYPEOFMATRIX ** m_create_##TYPEOFMATRIX##_matrix ( \ > int dim1, int dim2, int line, const char*file) \ > { \ > TYPEOFMATRIX **p; \ > int i; \ > \ > p = malloc (sizeof(TYPEOFMATRIX) * dim1 * dim2 \ > + sizeof(TYPEOFMATRIX *) * dim1 ); \ > if (p == NULL) { \ > fprintf(stderr, "cannot create " #TYPEOFMATRIX \ > " matrix of size (%d x %d): " \ > "see line %d of file %s\n", \ > dim1, dim2, line, file); \ > exit(1); \ > } \ > for (i = 0; i < dim1; i++) \ > p[i] = (TYPEOFMATRIX *) (p + dim1) + i * dim2; \ > return p; \ > } > > WORK_create_matrix(int) > WORK_create_matrix(double) > #undef WORK_create_matrix > #define create_double_matrix(dim1,dim2)\ > m_create_double_matrix(dim1,dim2,__LINE__,__FILE__) > > > int main(int argc, char *argv[]) > { > double **matrix1 = create_double_matrix(size, size); > double **matrix2 = create_double_matrix(size, size); > int iterations = 0; > int i,j; > double iter_limit = 100; > alpha = rand(); > beta = rand(); > > while (iterations < iter_limit) { > for (i = 0; i < size; i++) { > for (j = 0; j < size; j++) { > if (i == j) continue; > matrix2[i][j] = pow(matrix1[i][j], alpha) > * pow(matrix2[j][i], beta); > matrix1[j][i] = matrix2[i][j]; > } > } > iterations++; > } > > printf("Iterations = %d\n", iterations); > return 0; > } > /************************************/ > > Then in R evaluate: > >> print.default (system.time (system(paste ("time", "bash -c './timer-test 100 >> > > /dev/null'")))) > 10.77user 0.02system 0:10.81elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k > 0inputs+0outputs (0major+4574minor)pagefaults 0swaps > user.self sys.self elapsed user.child sys.child > 0.000 0.000 10.818 10.777 10.777 > attr(,"class") > [1] "proc_time" > > Expected: the sys.child time should be 0.02. > >> version > _ > platform i486-pc-linux-gnu > arch i486 > os linux-gnu > system i486, linux-gnu > status > major 2 > minor 6.2 > year 2008 > month 02 > day 08 > svn rev 44383 > language R > version.string R version 2.6.2 (2008-02-08) > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel