ルーカスは質問にうまく答えましたが、興味のある人のオーバーヘッドのタイミングがあります(コードをベクトル化することで効果的に削除できます)。
brace <- function(n){
w1=numeric(n)
w2=numeric(n)
r=rnorm(n)
for(i in 1:n)
w1[i]=((r[i]^2))*(1*1)
}
curly <- function(n){
w1=numeric(n)
w2=numeric(n)
r=rnorm(n)
for(i in 1:n)
w2[i]={{r[i]^2}}*{1*1}
}
microbenchmark(curly(1e5) , brace(1e5) , times = 50)
Unit: milliseconds
expr min lq median uq max neval
curly(1e+05) 311.4245 318.8916 324.1990 335.0928 400.8555 50
brace(1e+05) 315.5428 323.8860 328.7982 350.7268 406.5785 50
1e5ループ長で約5ミリ秒の差。ループを削除しましょう:
braceV <- function(n){
w1=numeric(n)
w2=numeric(n)
r=rnorm(n)
w1=((r^2))*(1*1)
}
curlyV <- function(n){
w1=numeric(n)
w2=numeric(n)
r=rnorm(n)
w2={{r^2}}*{1*1}
}
microbenchmark(curlyV(1e5) , braceV(1e5) , times = 50)
Unit: milliseconds
expr min lq median uq max neval
curlyV(1e+05) 9.014361 9.284532 9.666867 10.81317 37.82510 50
braceV(1e+05) 9.029408 9.373773 10.293302 10.83487 37.76596 50
違いは約0.5ミリ秒です。
64ビットLinuxでR-2.15.2を使用しているのは私のためのものではありません。 'sessionInfo()'からの出力を提供してください。 –
[Radford Nealのブログ](http://radfordneal.wordpress.com/2010/08/15/two-surpising-things-about-r/) – baptiste
を確認してください。上記で特定された相違点(私はBTWを再現することはできません)は、あなたがどのようにタスクにアプローチするかに目に見える違いをもたらします。 – Chase