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 中的矢量化(sum 是矢量化函数)在 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 回答