Я чувствовал, что скорость следующего кода R хороша. Есть ли способ увеличить скорость с помощью 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
Векторизация в R (сумма — векторизованная функция) выполняется в C в фоновом режиме. Часто достаточно быстро …
Вы можете попробовать это:
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
Не ожидайте, что это будет намного быстрее.