■はじめに
この記事中のスクリプト、実行結果はSlackチームr-wakalangにおいて"KS"さんが投稿したものです。
■評価手法
- Rのベクトル演算機能
- forループ
- whileループ
それぞれを使い、1から100までの整数について、x * (x + 1) の計算を100回繰り返し、その速度を計測しています。
■実行結果
library(microbenchmark) # 関数定義 # vector化 vectorize <- function(x) { sum(x * (x + 1)) } # for_loop for_loop <- function(x) { result <- 0 for (i in x) { result <- result + (i * (i + 1)) } return(result) } # while_loop while_loop <- function(x) { result <- 0 var <- x[1] while(var <= x[length(x)]) { result <- result + var * (var + 1) var <- var + 1 } return(result) } # 速度比較 microbenchmark(vectorize(1:100), for_loop(1:100), while_loop(1:100)) # Unit: microseconds # expr min lq mean median uq max neval # vectorize(1:100) 1.007 1.0635 1.41549 1.1115 1.170 23.759 100 # for_loop(1:100) 3.697 3.7970 4.24649 3.8355 3.925 23.033 100 # while_loop(1:100) 11.905 12.1145 12.91534 12.2780 12.512 68.246 100
カテゴリ: [R, r-wakalang]