0

次のRコードの速度は良いと感じました。C ++を使用して速度を上げる方法はありますか?私のC++コードはそれほど速くないと感じました。

#R-code
> s<-5
> t<-2
> y<-c(1,2,3,4,5)
> r<-c(1,5,5,3,3)
> 
> sindex<-r[r==s]
> tindex<-r[r==t]
> 
> 
> res<-sum(y[sindex])+sum(y[tindex])
> 
> sindex
[1] 5 5
> tindex
numeric(0)
> 
> res
[1] 10

#c++
res1=0; res2=0;
for(i=0;i<n;i++){
if(r[i]==s){
    res1=res1+y[s];
}
if(r[i]==t){
    res2=res2+y[t];
}
}
res=res1+res2
4

2 に答える 2

1

Rでのベクトル化(合計はベクトル化された関数です)は、バックグラウンドでCで実行されます。多くの場合、十分にスピーディーです...

于 2012-10-05T11:22:22.207 に答える
0

あなたはこれを試すことができます:

res = 0;
for (i = 0; i < n; i++)
     if (r[i] == s || r[i] == t)
          res += y[i];   // y[s] or y[t] seems incorrect

はるかに高速になるとは思わないでください。

于 2012-10-05T04:48:38.057 に答える