8

R のさまざまなバージョンでいくつかのコードのパフォーマンスを評価したいと考えています。これは原理的には簡単です。

  • スタート R
  • system.time()コードの実行にかかる時間を測定するために使用します
  • Rを終了する
  • すすぎ、別のバージョンで繰り返す

knitr今、これを行うためのレポートを作成するために使用したいと思います。したがって、各チャンクで新しいセッションを開始するメカニズムが必要なようです。

どうすればいいですか?


knitr デモンストレーションとして機能するいくつかのサンプルマークダウン コード。このコードは を使用してグラフィックをプロットしますggplotが、チャンクごとに R の新しいバージョンを開始する方法がわからないため、両方のバージョンが同じタイミングを返すことは明らかです。

Comparison of R performance
========================================================

# Do analysis in R version 2.14

```{r fig.width=6, fig.height=3}
library(ggplot2)
data(diamonds)

system.time({
  p <- ggplot(diamonds, aes(carat, price/carat, colour=clarity)) + geom_point()
  print(p)
})
```


# Repeat same analysis in R 2.15

```{r fig.width=6, fig.height=3}
library(ggplot2)
data(diamonds)

system.time({
  p <- ggplot(diamonds, aes(carat, price/carat, colour=clarity)) + geom_point()
  print(p)
})
```
4

1 に答える 1

6

Rscriptエンジンを追加するのknitr は簡単でしたが、R のバグが足かせになりました。とにかく、このエンジンはバージョン 1.1.5以降で利用可能で、バージョン 1.2 として CRAN に搭載されます。

チャンク オプションengine='Rscript'engine.path='path/to/the/desired/Rscript'.

大規模なパフォーマンス比較については、上記のコメントで Ari B. Friedman が提案した方法の方が適していると思います。比較するコード チャンクが多数ある場合、エンジン パスを入力するのは非常に面倒です。

于 2013-03-10T03:51:49.197 に答える