library( profr )

#assign( x="profrk",
#        envir= .GlobalEnv,
profrk <- function( expr, delay=1, interval=.02, quiet ) {
          profrk_marker <- function( expr ) {
            eval( expr )  
            }

          filter <- function( prof.out ) {
            level.filter <- prof.out$level[ which( prof.out == 'profrk_marker' ) ] + 2

            prof.out <- prof.out[ prof.out$level > level.filter, ]
            time.offset <- min( prof.out$start )

            prof.out$start <- prof.out$start - time.offset
            prof.out$end <- prof.out$end - time.offset

            prof.out
            }

          filter( profr( { Sys.sleep( delay ); profrk_marker( substitute( expr ) ) },
                         interval=interval,
                         quiet=quiet ) )
        }
#      )
render_markdown( strict = T )

pr <- profrk( example( quantile, setRNG=TRUE ),
              delay=0.5,
              interval=.002,
              quiet=FALSE)

## 
## quantl> quantile(x <- rnorm(1001)) # Extremes & Quartiles by default
##       0%      25%      50%      75%     100% 
## -3.00805 -0.69732 -0.03473  0.68924  3.81028 
## 
## quantl> quantile(x,  probs = c(0.1, 0.5, 1, 2, 5, 10, 50, NA)/100)
##     0.1%     0.5%       1%       2%       5%      10%      50%          
## -2.99695 -2.59233 -2.42432 -2.24515 -1.72663 -1.33880 -0.03473       NA 
## 
## quantl> ### Compare different types
## quantl> p <- c(0.1, 0.5, 1, 2, 5, 10, 50)/100
## 
## quantl> res <- matrix(as.numeric(NA), 9, 7)
## 
## quantl> for(type in 1:9) res[type, ] <- y <- quantile(x,  p, type = type)
## 
## quantl> dimnames(res) <- list(1:9, names(y))
## 
## quantl> round(res, 3)
##     0.1%   0.5%     1%     2%     5%    10%    50%
## 1 -2.997 -2.592 -2.424 -2.245 -1.727 -1.339 -0.035
## 2 -2.997 -2.592 -2.424 -2.245 -1.727 -1.339 -0.035
## 3 -3.008 -2.596 -2.433 -2.265 -1.733 -1.344 -0.036
## 4 -3.008 -2.596 -2.433 -2.264 -1.733 -1.344 -0.035
## 5 -3.002 -2.594 -2.428 -2.255 -1.730 -1.341 -0.035
## 6 -3.008 -2.596 -2.432 -2.264 -1.733 -1.343 -0.035
## 7 -2.997 -2.592 -2.424 -2.245 -1.727 -1.339 -0.035
## 8 -3.004 -2.595 -2.430 -2.258 -1.731 -1.342 -0.035
## 9 -3.004 -2.595 -2.429 -2.257 -1.730 -1.341 -0.035

plot( pr )

plot of chunk unnamed-chunk-1

print( pr )

##                         f level  time start   end  leaf source
## 38                example    30 0.162 0.000 0.162 FALSE  utils
## 39           find.package    31 0.002 0.000 0.002 FALSE   base
## 40           index.search    31 0.008 0.002 0.010 FALSE   <NA>
## 41               tempfile    31 0.002 0.010 0.012  TRUE   base
## 42                     ::    31 0.002 0.012 0.014 FALSE   base
## 43            <Anonymous>    31 0.098 0.014 0.112 FALSE   <NA>
## 44            file.exists    31 0.002 0.112 0.114  TRUE   base
## 45        lazyLoadDBfetch    31 0.002 0.114 0.116  TRUE   base
## 46                     ::    31 0.002 0.116 0.118  TRUE   base
## 47        lazyLoadDBfetch    31 0.002 0.118 0.120  TRUE   base
## 48                 source    31 0.038 0.120 0.158 FALSE   base
## 49                 unlink    31 0.004 0.158 0.162  TRUE   base
## 50        lazyLoadDBfetch    32 0.002 0.000 0.002  TRUE   base
## 51                readRDS    32 0.002 0.002 0.004 FALSE   base
## 52            file.exists    32 0.002 0.004 0.006  TRUE   base
## 53                readRDS    32 0.004 0.006 0.010  TRUE   base
## 54       getExportedValue    32 0.002 0.012 0.014 FALSE   base
## 55        lazyLoadDBfetch    32 0.002 0.014 0.016  TRUE   base
## 56             prepare_Rd    32 0.034 0.016 0.050 FALSE   <NA>
## 57                 RdTags    32 0.002 0.050 0.052 FALSE   <NA>
## 58                    of0    32 0.002 0.052 0.054 FALSE   <NA>
## 59       .Rd_format_title    32 0.022 0.054 0.076 FALSE   <NA>
## 60                    of0    32 0.010 0.076 0.086 FALSE   <NA>
## 61                 render    32 0.024 0.086 0.110 FALSE   <NA>
## 62                  close    32 0.002 0.110 0.112 FALSE   base
## 63            srcfilecopy    32 0.002 0.120 0.122 FALSE   base
## 64                  paste    32 0.002 0.122 0.124 FALSE   base
## 65            withVisible    32 0.032 0.124 0.156 FALSE   base
## 66                   grep    32 0.002 0.156 0.158  TRUE   base
## 67                 gzfile    33 0.002 0.002 0.004  TRUE   base
## 68  getInternalExportName    33 0.002 0.012 0.014 FALSE   <NA>
## 69           .getHelpFile    33 0.028 0.016 0.044 FALSE   <NA>
## 70        lazyLoadDBfetch    33 0.002 0.044 0.046  TRUE   base
## 71        setDynamicFlags    33 0.002 0.046 0.048 FALSE   <NA>
## 72              structure    33 0.002 0.048 0.050  TRUE   base
## 73                 sapply    33 0.002 0.050 0.052 FALSE   base
## 74                    of1    33 0.002 0.052 0.054 FALSE   <NA>
## 75                   gsub    33 0.022 0.054 0.076 FALSE   base
## 76                    of1    33 0.010 0.076 0.086 FALSE   <NA>
## 77                    of0    33 0.024 0.086 0.110 FALSE   <NA>
## 78       close.connection    33 0.002 0.110 0.112  TRUE   base
## 79                      [    33 0.002 0.120 0.122 FALSE   base
## 80                rep.int    33 0.002 0.122 0.124 FALSE   base
## 81                   eval    33 0.032 0.124 0.156 FALSE   base
## 82                    get    34 0.002 0.012 0.014 FALSE   base
## 83            <Anonymous>    34 0.028 0.016 0.044 FALSE   <NA>
## 84                  apply    34 0.002 0.046 0.048 FALSE   base
## 85                 lapply    34 0.002 0.050 0.052  TRUE   base
## 86             WriteLines    34 0.002 0.052 0.054  TRUE   <NA>
## 87          .Rd_get_title    34 0.020 0.054 0.074 FALSE   <NA>
## 88             WriteLines    34 0.010 0.076 0.086 FALSE   <NA>
## 89                    of1    34 0.024 0.086 0.110 FALSE   <NA>
## 90           [.data.frame    34 0.002 0.120 0.122  TRUE   base
## 91                 paste0    34 0.002 0.122 0.124 FALSE   base
## 92                   eval    34 0.032 0.124 0.156 FALSE   base
## 93        lazyLoadDBfetch    35 0.002 0.012 0.014  TRUE   base
## 94         lazyLoadDBexec    35 0.028 0.016 0.044 FALSE   base
## 95                 sapply    35 0.002 0.046 0.048 FALSE   base
## 96        .Rd_get_section    35 0.002 0.054 0.056 FALSE   <NA>
## 97           .Rd_get_text    35 0.018 0.056 0.074 FALSE   <NA>
## 98             writeLines    35 0.010 0.076 0.086 FALSE   base
## 99             WriteLines    35 0.024 0.086 0.110 FALSE   <NA>
## 100            abbreviate    35 0.002 0.122 0.124 FALSE   base
## 101              quantile    35 0.032 0.124 0.156 FALSE  stats
## 102               readRDS    36 0.006 0.016 0.022 FALSE   base
## 103                   set    36 0.002 0.022 0.024  TRUE   <NA>
## 104                   fun    36 0.020 0.024 0.044 FALSE   <NA>
## 105                lapply    36 0.002 0.046 0.048 FALSE   base
## 106                RdTags    36 0.002 0.054 0.056 FALSE   <NA>
## 107       lazyLoadDBfetch    36 0.002 0.056 0.058 FALSE   base
## 108              tryCatch    36 0.016 0.058 0.074 FALSE   base
## 109                paste0    36 0.010 0.076 0.086 FALSE   base
## 110            writeLines    36 0.024 0.086 0.110 FALSE   base
## 111                   sub    36 0.002 0.122 0.124  TRUE   base
## 112       lazyLoadDBfetch    36 0.002 0.124 0.126  TRUE   base
## 113      quantile.default    36 0.030 0.126 0.156 FALSE  stats
## 114                gzfile    37 0.002 0.016 0.018  TRUE   base
## 115                 close    37 0.002 0.020 0.022  TRUE   base
## 116                 fetch    37 0.020 0.024 0.044  TRUE   <NA>
## 117                   FUN    37 0.002 0.046 0.048 FALSE   <NA>
## 118                sapply    37 0.002 0.054 0.056 FALSE   base
## 119           <Anonymous>    37 0.002 0.056 0.058  TRUE   <NA>
## 120          tryCatchList    37 0.016 0.058 0.074 FALSE   <NA>
## 121                    wr    37 0.010 0.076 0.086 FALSE   <NA>
## 122                paste0    37 0.024 0.086 0.110 FALSE   base
## 123                   seq    37 0.002 0.126 0.128 FALSE   base
## 124                 paste    37 0.010 0.128 0.138 FALSE   base
## 125                  sort    37 0.002 0.138 0.140 FALSE   base
## 126                 paste    37 0.002 0.142 0.144 FALSE   base
## 127                  sort    37 0.002 0.144 0.146  TRUE   base
## 128                 paste    37 0.002 0.146 0.148 FALSE   base
## 129                  sort    37 0.002 0.148 0.150  TRUE   base
## 130             getOption    37 0.002 0.150 0.152 FALSE   base
## 131                 paste    37 0.002 0.152 0.154 FALSE   base
## 132                  sort    37 0.002 0.154 0.156 FALSE   base
## 133           <Anonymous>    38 0.006 0.034 0.040 FALSE   <NA>
## 134                    [[    38 0.002 0.046 0.048  TRUE   base
## 135        simplify2array    38 0.002 0.054 0.056 FALSE   base
## 136       lazyLoadDBfetch    38 0.012 0.058 0.070  TRUE   base
## 137                Rd2txt    38 0.004 0.070 0.074 FALSE   <NA>
## 138                paste0    38 0.010 0.076 0.086 FALSE   base
## 139                 remap    38 0.024 0.086 0.110 FALSE   <NA>
## 140           seq.default    38 0.002 0.126 0.128 FALSE   base
## 141       lazyLoadDBfetch    38 0.008 0.128 0.136  TRUE   base
## 142               formatC    38 0.002 0.136 0.138  TRUE   base
## 143          sort.default    38 0.002 0.138 0.140 FALSE   base
## 144               formatC    38 0.006 0.142 0.148 FALSE   base
## 145               options    38 0.002 0.150 0.152  TRUE   base
## 146               formatC    38 0.002 0.152 0.154  TRUE   base
## 147          sort.default    38 0.002 0.154 0.156 FALSE   base
## 148          getFromFrame    39 0.002 0.034 0.036  TRUE   <NA>
## 149         existsInFrame    39 0.004 0.036 0.040  TRUE   <NA>
## 150                unique    39 0.002 0.054 0.056 FALSE   base
## 151             blankLine    39 0.004 0.070 0.074 FALSE   <NA>
## 152               strwrap    39 0.010 0.076 0.086 FALSE   base
## 153                  psub    39 0.024 0.086 0.110  TRUE   <NA>
## 154       lazyLoadDBfetch    39 0.002 0.126 0.128  TRUE   base
## 155              sort.int    39 0.002 0.138 0.140  TRUE   base
## 156                  pmax    39 0.002 0.142 0.144 FALSE   base
## 157           blank.chars    39 0.002 0.146 0.148 FALSE   <NA>
## 158              sort.int    39 0.002 0.154 0.156  TRUE   base
## 159                unlist    40 0.002 0.054 0.056 FALSE   base
## 160                 grepl    40 0.002 0.070 0.072  TRUE   base
## 161           flushBuffer    40 0.002 0.072 0.074 FALSE   <NA>
## 162                 remap    40 0.004 0.076 0.080 FALSE   <NA>
## 163                lapply    40 0.002 0.080 0.082 FALSE   base
## 164                 remap    40 0.002 0.082 0.084 FALSE   <NA>
## 165                  %in%    40 0.002 0.084 0.086 FALSE   base
## 166                ifelse    40 0.002 0.142 0.144  TRUE   base
## 167                vapply    40 0.002 0.146 0.148 FALSE   base
## 168                lapply    41 0.002 0.054 0.056  TRUE   base
## 169               strwrap    41 0.002 0.072 0.074 FALSE   base
## 170                  psub    41 0.004 0.076 0.080  TRUE   <NA>
## 171                   FUN    41 0.002 0.080 0.082  TRUE   <NA>
## 172                  psub    41 0.002 0.082 0.084  TRUE   <NA>
## 173                 match    41 0.002 0.084 0.086 FALSE   base
## 174                   FUN    41 0.002 0.146 0.148 FALSE   <NA>
## 175                lapply    42 0.002 0.072 0.074 FALSE   base
## 176                  grep    42 0.002 0.084 0.086  TRUE   base
## 177                 paste    42 0.002 0.146 0.148  TRUE   base
## 178              strsplit    43 0.002 0.072 0.074  TRUE   base