基本原則:メモリ割り当て

効率的なRコードの書き方

Colin Gillespie

Jumping Rivers & Newcastle University

効率的なRコードの書き方

Cで記述する場合...

メモリ割り当ては自分で管理する
// C code: request memory for a number
x = (double *) malloc(sizeof(double));

// Free the memory
free(x);
  • Rではメモリ割り当ては自動的に行われる
  • Rは変数をRAMに格納するためにメモリを確保する
  • 速度向上のため、変数への代入を最小限にする
効率的なRコードの書き方

例:整数のシーケンス

$$ 1, 2, \ldots, n $$

最も明快で最善の方法
## Method 1
x <- 1:n
まずまずの方法
## Method 2
x <- vector("numeric", n) # length n
for(i in 1:n)
    x[i] <- i
絶対に避けること!
## Method 3
x <- NULL # Length zero
for(i in 1:n)
    x <- c(x, i)
効率的なRコードの書き方

ベンチマーク

  • メソッド1: 1:n
  • メソッド2: 事前割り当て
  • メソッド3: 逐次拡張
時間(秒)
n 1 2 3
$10^5$ 0.00 0.02 0.2
$10^6$ 0.00 0.2 30
$10^7$ 0.00 2 3800

効率的なRコードの書き方

Rクラブへようこそ!

Rクラブの第一のルール:ベクターを拡張してはならない。

効率的なRコードの書き方

練習しましょう!

効率的なRコードの書き方

Preparing Video For Download...