[Rd] system.time provides inaccurate sys.child (PR#14210)

Henrik Bengtsson hb at stat.berkeley.edu
Sun Feb 21 10:40:08 CET 2010


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-ibanez at 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 at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



More information about the R-devel mailing list