[Rd] Rprof loses all system() time
Gabor Grothendieck
ggrothendieck at gmail.com
Fri Jun 12 23:41:28 CEST 2009
You could run proc.time() before and after each system call.
x <- proc.time()
# do something
y <- proc.time()
y - x
On Fri, Jun 12, 2009 at 5:31 PM, Andrew Piskorski<atp at piskorski.com> wrote:
> Rprof seems to ignore all time spent inside system() calls. E.g.,
> this simple example actually takes about 10 seconds, but Rprof thinks
> the total time is only 0.12 seconds:
>
>> Rprof("sleep-system.out") ; system.time(system(command="sleep 10")) ; Rprof(NULL)
> user system elapsed
> 0.000 0.004 10.015
>> summaryRprof("sleep-system.out")$by.total
> total.time total.pct self.time self.pct
> "gc" 0.12 100 0.12 100
> "system.time" 0.12 100 0.00 0
>>
>
> I assume that what's going on here, is that anytime R blocks waiting
> for data from a child process, the profiler stops running entirley,
> and it then loses track of all that time spend blocking.
>
> This Rprof behavior is frustrating, because I use a database access
> layer which essentially works by having R call system() to run a shell
> script. So, if I write a really slow query that takes 10 minutes to
> run, as for as Rprof is concerned, those 10 minutes never happened,
> the query consumed zero time. In complicated code, this makes it much
> harder to figure out what parts are slow due to slow R code vs. slow
> SQL queries.
>
> Why does Rprof behave this way? Is there something I can do to
> work-around or alleviate this? What do you think it would take to fix
> Rprof to track the time spent waiting for system() to finish, and
> where in the R source should I look to attempt that?
>
> Thanks!
>
> --
> Andrew Piskorski <atp at piskorski.com>
> http://www.piskorski.com/
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
More information about the R-devel
mailing list