Q. скорость между & quot; R с индикатором & quot; и «c ++ с for»

Я чувствовал, что скорость следующего кода 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

0

Решение

Векторизация в R (сумма — векторизованная функция) выполняется в C в фоновом режиме. Часто достаточно быстро …

1

Другие решения

Вы можете попробовать это:

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

Не ожидайте, что это будет намного быстрее.

0

По вопросам рекламы [email protected]