Home > R programming > Overhead cost of a function call

Overhead cost of a function call

Recently, I would like to apply unit testing method to my R program. The first thing i need to chop every few lines of the code into functions so that I can test each of them.

A Question comes up to my mind: What is the overhead cost of a function call? To answer this question, i wrote the following :

library(rbenchmark)
library(compiler)

f<-function(x,y){
    x+y
}
g<-function(x,y){
   f(x,y)
}

cmpf<-cmpfun(f)
cmpg<-cmpfun(g)

benchmark(1+2,f(1,2),g(1,2),cmpf(1,2),cmpg(1,2),cmpg2(1,2), replications =1000000, columns = c("test", "replications", "elapsed", "relative"),order='relative')

          test replications elapsed relative
1       1 + 2      1000000    4.00    1.000
4  cmpf(1, 2)      1000000    4.34    1.085
2     f(1, 2)      1000000    4.82    1.205
5  cmpg(1, 2)      1000000    5.44    1.360
3     g(1, 2)      1000000    5.68    1.420

The result suggests several things

  1. The overhead cost is about 0.82 second for 1,000,000 times function call.
  2. If we compile the function, the overhead cost is about 0.34 second for 1,000,000 times function call.

I don’t know whether it is a huge cost, but I believe the benefit of cleaner writing code with unit testing must worth more than that!

About these ads
Categories: R programming
  1. October 2, 2011 at 11:46 | #1

    Hello Julian,
    For the type of precision you are checking for, you are better off looking at:
    http://cran.r-project.org/web/packages/microbenchmark/index.html

    Cheers,
    Tal

  2. March 19, 2013 at 04:27 | #2

    I personally was looking for techniques for my own web
    site and encountered ur posting, “Overhead cost of a function
    call | R HEAD” Window Treatments , do you care
    in the event I actually employ a bit of of
    your own ideas? Many thanks -Shanon

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: