A: マイクロベンチマーク パッケージを使用して実行時間を測定する方法
R のマイクロベンチマークパッケージを使用して、さまざまな式の実行時間を比較できます。
これを行うには、次の構文を使用できます。
library (microbenchmark) #compare execution time of two different expressions microbenchmark( expression1, expression2) )
次の例は、この構文を実際に使用する方法を示しています。
例: R での microbenchmark() の使用
R に、さまざまなバスケットボール チームの選手が獲得したポイントに関する情報を含む次のデータ フレームがあるとします。
#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
ここで、2 つの異なる方法を使用して、各チームのプレーヤーが獲得した平均ポイントを計算するとします。
- 方法 1 : Base R からAggregate()を使用する
- 方法 2 : dplyr のgroup_by()とsummarise_at()を使用する
microbenchmark()関数を使用して、これらの各式の実行にかかる時間を測定できます。
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
microbenchmark()関数は各式を 100 回実行し、次のメトリクスを測定します。
- min : 実行に必要な最小時間
- lq : 完了までに必要な時間の下位 4 分の 1 (25 パーセンタイル)
- Mean : 実行に要した平均時間
- median : 実行時間の中央値
- uq : 実行に必要な時間の上位 4 分の 1 (75 パーセンタイル)
- max : 実行に必要な最大時間
- neval : 各式が評価された回数
通常、各式の実行にかかる時間の平均または中央値のみを確認します。
結果から次のことがわかります。
- R ベースの方法を使用してチーム ポイントの平均を計算するには、平均1,852 ミリ秒かかりました。
- dplyr メソッドを使用してチームごとの平均ポイントを計算するには、平均9.946 ミリ秒かかりました。
これらの結果に基づいて、基本的な R メソッドが大幅に高速であると結論付けます。
boxplot()関数を使用して、各式の実行に必要な時間の分布を視覚化することもできます。
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 '))
箱ひげ図から、dplyr メソッドはチームごとの平均ポイント値を計算するのに平均して時間がかかることがわかります。
注: この例では、 microbenchmark()関数を使用して 2 つの異なる式の実行時間を比較しましたが、実際には必要なだけ式を比較できます。
追加リソース
次のチュートリアルでは、R で他の一般的なタスクを実行する方法について説明します。