R: como usar o pacote microbenchmark para medir o tempo de execução
Você pode usar o pacote microbenchmark em R para comparar o tempo de execução de diferentes expressões.
Você pode usar a seguinte sintaxe para fazer isso:
library (microbenchmark) #compare execution time of two different expressions microbenchmark( expression1, expression2) )
O exemplo a seguir mostra como usar essa sintaxe na prática.
Exemplo: Usando microbenchmark() em R
Suponha que temos o seguinte quadro de dados em R que contém informações sobre os pontos marcados por jogadores de vários times de basquete:
#make this example reproducible
set. seed ( 1 )
#create data frame
df <- data. frame (team=rep(c(' A ', ' B '), each= 500 ),
points=rnorm( 1000 , mean= 20 ))
#view data frame
head(df)
team points
1 A 19.37355
2 A 20.18364
3 A 19.16437
4 A 21.59528
5 A 20.32951
6 A 19.17953
Agora, suponha que queiramos calcular a média de pontos marcados pelos jogadores de cada equipe usando dois métodos diferentes:
- Método 1 : Use Aggregate() da Base R
- Método 2 : Use group_by() e summarise_at() do dplyr
Podemos usar a função microbenchmark() para medir o tempo que leva para executar cada uma destas expressões:
library (microbenchmark) library (dplyr) #time how long it takes to calculate mean value of points by team microbenchmark( aggregate(df$points, list(df$team), FUN=mean), df %>% group_by(team) %>% summarise_at(vars(points), list(name = mean)) ) Unit: milliseconds express 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 1.307908 1.524078 1.852167 1.743568 2.093813 4.67408 100 a 6.788584 7.810932 9.946286 8.914692 10.239904 56.20928 100 b
A função microbenchmark() executa cada expressão 100 vezes e mede as seguintes métricas:
- min : Tempo mínimo necessário para execução
- lq : quartil inferior (percentil 25) de tempo necessário para concluir
- Média : Tempo médio necessário para execução
- mediana : tempo médio de execução
- uq : quartil superior (percentil 75) de tempo necessário para execução
- max : Tempo máximo necessário para execução
- neval : Número de vezes que cada expressão foi avaliada
Normalmente, observamos apenas o tempo médio ou mediano necessário para executar cada expressão.
Pelo resultado podemos ver:
- Demorou em média 1.852 milissegundos para calcular a média de pontos da equipe usando o método baseado em R.
- Demorou em média 9,946 milissegundos para calcular a média de pontos por equipe usando o método dplyr.
Com base nestes resultados, concluímos que o método base R é significativamente mais rápido.
Também podemos usar a função boxplot() para visualizar a distribuição dos tempos necessários para executar cada expressão:
library (microbenchmark) library (dplyr) #time how long it takes to calculate mean value of points by team results <- microbenchmark( aggregate(df$points, list(df$team), FUN=mean), df %>% group_by(team) %>% summarise_at(vars(points), list(name = mean)) ) #create boxplot to visualize results boxplot(results, names=c(' Base R ', ' dplyr '))
Nos box plots, podemos ver que o método dplyr leva mais tempo, em média, para calcular o valor médio de pontos por equipe.
Nota : Neste exemplo, usamos a função microbenchmark() para comparar o tempo de execução de duas expressões diferentes, mas você pode comparar quantas expressões quiser na prática.
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras tarefas comuns em R:
Como limpar o ambiente em R
Como limpar todos os gráficos no RStudio
Como carregar vários pacotes em R