# How to Measure Execution Time in R

How to Measure Execution Time in R, To compare the execution times of different expressions, use R’s microbenchmark package.

To do so, use the following syntax:

`library(microbenchmark)`

Let’s compare two different expressions’ execution times

`microbenchmark(expression1, expression2))`

The following example shows how to use this syntax in practice.

How To Become A Quantitative Analyst » finnstats

## Example: Using microbenchmark() in R

Assume we have the following R data frame containing information about points scored by players on various basketball teams:

Make this example replicable.

`set.seed(123)`

Let’s create a data frame

`df <- data.frame(team=rep(c('A', 'B'), each=500), points=rnorm(1000, mean=20))`

Now we can view the data frame

Where can I find Data Science Internships » finnstats

`head(df)`
```    team   points
1    A 19.43952
2    A 19.76982
3    A 21.55871
4    A 20.07051
5    A 20.12929
6    A 21.71506```

Assume we want to compute the average points scored by players on each team using two different methods:

Method 1: Use aggregate() from Base R

Method 2: Use group_by() and summarise_at() from dplyr

We can use the microbenchmark() function to see how long each of these expressions takes to execute:

```library(microbenchmark)
library(dplyr)```

the time it takes to calculate the mean value of points by a team

```microbenchmark(
aggregate(df\$points, list(df\$team), FUN=mean),
df %>% group_by(team) %>% summarise_at(vars(points), list(name = mean)))```
```Unit: microseconds
expr
aggregate(df\$points, list(df\$team), FUN = mean)
df %>% group_by(team) %>% summarise_at(vars(points), list(name = mean))
min       lq      mean  median      uq      max neval cld
609.5   736.65  1013.814   820.2  1063.2   3628.1   100  a
11745.8 12475.40 19648.114 14099.4 16279.9 439932.2   100   b```

The microbenchmark() function runs each expression 100 times to calculate the following metrics:

min: The shortest amount of time it took to execute.

Data Science applications in Retail » finnstats

lq: Execution time in the lower quartile (25th percentile).

mean: The amount of time it took to execute.

median: The execution time in minutes.

uq: Upper quartile (75th percentile) execution time.

max: The maximum amount of time it took to execute.

The number of times each expression was evaluated by neval.

Typically, we only consider the mean or median time required to execute each expression.

We can also use the boxplot() function to visualize the time distribution for each expression:

Is It Difficult to Learn Data Science » finnstats

```library(microbenchmark)
library(dplyr)```

the time it takes to calculate the mean value of points by a team

```results <- microbenchmark(
aggregate(df\$points, list(df\$team), FUN=mean),
df %>% group_by(team) %>% summarise_at(vars(points), list(name = mean)))```

Now we can create a boxplot to visualize the results

`boxplot(results, names=c('Base R', 'dplyr'))`

According to the boxplots, the dplyr method takes longer on average to calculate the mean points value by the team.

Note: In this example, we compared the execution times of two different expressions using the microbenchmark() function, but in practice, you can compare as many expressions as you want.

Based on these findings, we can conclude that the standard R method is significantly faster.