[R] Help interpreting output of Rprof

Thomas Lumley tlumley at u.washington.edu
Mon Oct 22 22:16:51 CEST 2007


On Mon, 22 Oct 2007, Dieter Best wrote:

> Hello there,
>
> I am not quite sure how to interpret the output of Rprof (in the following the
> output I was staring at). I was poking around the web a little bit for 
>documentation but without much success. I guess if I want to figure out what 
>takes so long in my code the 2nd table $by.total and the total.pct column (pct
> = percent) is the most helpful. What does it mean that [ or [.data.frame is 
>taking so much time, and is there something I could do to improve the 
> situation.

It means that [.data.frame is taking a long time. This does happen -- it is a very general function and it can do a lot of memory allocation.  The first thing to check is that you have a current version of R, since there have been improvements in recent versions.

You may be able to use a matrix or a list instead of a data frame. If so, this is likely to be faster. Otherwise it depends on exactly what you are doing.

        -thomas



>> summaryRprof(tmp)
> $by.self
>              self.time self.pct total.time total.pct
> eval.with.vis     75.92     22.4     339.18     100.0
> [.data.frame      46.28     13.6     186.36      54.9
> structure         31.78      9.4      79.92      23.6
> inherits          27.28      8.0      29.08       8.6
> match             20.38      6.0      53.84      15.9
> names             20.20      6.0      20.20       6.0
> length             9.68      2.9       9.68       2.9
> pmatch             9.02      2.7      10.46       3.1
> [                  8.56      2.5     194.92      57.5
> eval               5.84      1.7      31.02       9.1
> any                5.78      1.7       6.88       2.0
> match.arg          5.68      1.7      40.54      12.0
> is.factor          4.68      1.4      32.28       9.5
> cor                4.66      1.4      67.44      19.9
> [[                 4.32      1.3      13.46       4.0
> stopifnot          4.10      1.2      11.94       3.5
> <Anonymous>        4.08      1.2       4.56       1.3
> deparse            3.86      1.1      23.92       7.1
> [[.data.frame      3.70      1.1       9.14       2.7
> ==                 3.20      0.9       3.20       0.9
> vector             2.80      0.8      11.94       3.5
> rank               2.40      0.7      22.58       6.7
>>                  2.16      0.6       2.16       0.6
> !                  1.92      0.6       1.92       0.6
> %in%               1.86      0.5      25.48       7.5
> switch             1.68      0.5       1.76       0.5
> names<-            1.56      0.5       1.78       0.5
> <                  1.54      0.5       1.54       0.5
> .deparseOpts       1.50      0.4      11.98       3.5
> match.call         1.48      0.4       2.84       0.8
> .Call              1.34      0.4       1.34       0.4
> is.na              1.30      0.4       1.30       0.4
> all                1.24      0.4       1.48       0.4
> formals            1.22      0.4       2.46       0.7
> mode               1.22      0.4       1.32       0.4
> sum                1.20      0.4       1.62       0.5
> sys.parent         1.14      0.3       1.14       0.3
> as.character       0.98      0.3       0.98       0.3
> parent.frame       0.96      0.3       0.96       0.3
> attributes<-       0.90      0.3       0.90       0.3
> sys.call           0.86      0.3       1.36       0.4
> list               0.82      0.2       0.82       0.2
> &                  0.74      0.2       0.74       0.2
> sys.function       0.58      0.2       1.22       0.4
> attr<-             0.58      0.2       0.58       0.2
> is.logical         0.56      0.2       0.56       0.2
> Rank               0.54      0.2      23.18       6.8
> !=                 0.54      0.2       0.54       0.2
> :                  0.52      0.2       0.52       0.2
> -                  0.46      0.1       0.46       0.1
> as.vector          0.44      0.1       0.44       0.1
> .subset2           0.36      0.1       0.36       0.1
> min                0.34      0.1       0.34       0.1
> seq_along          0.34      0.1       0.34       0.1
> max                0.32      0.1       0.32       0.1
> is.data.frame      0.24      0.1       1.72       0.5
> is.character       0.18      0.1       0.18       0.1
> is.matrix          0.18      0.1       0.18       0.1
> oldClass<-         0.18      0.1       0.18       0.1
> is.list            0.16      0.0       0.16       0.0
> (                  0.14      0.0       0.14       0.0
> dim                0.14      0.0       0.14       0.0
> ^                  0.12      0.0       0.12       0.0
> is.pairlist        0.10      0.0       0.10       0.0
> is.null            0.08      0.0       0.08       0.0
> attributes         0.06      0.0       0.06       0.0
> is.atomic          0.06      0.0       0.06       0.0
> baseenv            0.04      0.0       0.04       0.0
> is.call            0.04      0.0       0.04       0.0
> is.name            0.04      0.0       0.04       0.0
> is.expression      0.02      0.0       0.02       0.0
> source             0.00      0.0     339.18     100.0
> $by.total
>              total.time total.pct self.time self.pct
> eval.with.vis     339.18     100.0     75.92     22.4
> source            339.18     100.0      0.00      0.0
> [                 194.92      57.5      8.56      2.5
> [.data.frame      186.36      54.9     46.28     13.6
> structure          79.92      23.6     31.78      9.4
> cor                67.44      19.9      4.66      1.4
> match              53.84      15.9     20.38      6.0
> match.arg          40.54      12.0      5.68      1.7
> is.factor          32.28       9.5      4.68      1.4
> eval               31.02       9.1      5.84      1.7
> inherits           29.08       8.6     27.28      8.0
> %in%               25.48       7.5      1.86      0.5
> deparse            23.92       7.1      3.86      1.1
> Rank               23.18       6.8      0.54      0.2
> rank               22.58       6.7      2.40      0.7
> names              20.20       6.0     20.20      6.0
> [[                 13.46       4.0      4.32      1.3
> .deparseOpts       11.98       3.5      1.50      0.4
> stopifnot          11.94       3.5      4.10      1.2
> vector             11.94       3.5      2.80      0.8
> pmatch             10.46       3.1      9.02      2.7
> length              9.68       2.9      9.68      2.9
> [[.data.frame       9.14       2.7      3.70      1.1
> any                 6.88       2.0      5.78      1.7
> <Anonymous>         4.56       1.3      4.08      1.2
> ==                  3.20       0.9      3.20      0.9
> match.call          2.84       0.8      1.48      0.4
> formals             2.46       0.7      1.22      0.4
>>                   2.16       0.6      2.16      0.6
> !                   1.92       0.6      1.92      0.6
> names<-             1.78       0.5      1.56      0.5
> switch              1.76       0.5      1.68      0.5
> is.data.frame       1.72       0.5      0.24      0.1
> sum                 1.62       0.5      1.20      0.4
> <                   1.54       0.5      1.54      0.5
> all                 1.48       0.4      1.24      0.4
> sys.call            1.36       0.4      0.86      0.3
> .Call               1.34       0.4      1.34      0.4
> mode                1.32       0.4      1.22      0.4
> is.na               1.30       0.4      1.30      0.4
> sys.function        1.22       0.4      0.58      0.2
> sys.parent          1.14       0.3      1.14      0.3
> as.character        0.98       0.3      0.98      0.3
> parent.frame        0.96       0.3      0.96      0.3
> attributes<-        0.90       0.3      0.90      0.3
> list                0.82       0.2      0.82      0.2
> &                   0.74       0.2      0.74      0.2
> attr<-              0.58       0.2      0.58      0.2
> is.logical          0.56       0.2      0.56      0.2
> !=                  0.54       0.2      0.54      0.2
> :                   0.52       0.2      0.52      0.2
> -                   0.46       0.1      0.46      0.1
> as.vector           0.44       0.1      0.44      0.1
> .subset2            0.36       0.1      0.36      0.1
> min                 0.34       0.1      0.34      0.1
> seq_along           0.34       0.1      0.34      0.1
> max                 0.32       0.1      0.32      0.1
> is.character        0.18       0.1      0.18      0.1
> is.matrix           0.18       0.1      0.18      0.1
> oldClass<-          0.18       0.1      0.18      0.1
> is.list             0.16       0.0      0.16      0.0
> (                   0.14       0.0      0.14      0.0
> dim                 0.14       0.0      0.14      0.0
> ^                   0.12       0.0      0.12      0.0
> is.pairlist         0.10       0.0      0.10      0.0
> is.null             0.08       0.0      0.08      0.0
> attributes          0.06       0.0      0.06      0.0
> is.atomic           0.06       0.0      0.06      0.0
> baseenv             0.04       0.0      0.04      0.0
> is.call             0.04       0.0      0.04      0.0
> is.name             0.04       0.0      0.04      0.0
> is.expression       0.02       0.0      0.02      0.0
> $sampling.time
> [1] 339.18
>
> __________________________________________________
>
>
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

Thomas Lumley			Assoc. Professor, Biostatistics
tlumley at u.washington.edu	University of Washington, Seattle



More information about the R-help mailing list