2012-10-05 2 views
0

다음 R 코드의 속도가 좋았다고 느꼈습니다. C++을 사용하여 속도를 높이는 방법이 있습니까? 내 C++ 코드가 그렇게 빠르지 않다고 느꼈다.Q. "R 표시기"와 "C++ with"사이의 속도

#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 
+1

귀하의 간단한 예제로, 어떤 속도 업은 사소한 것입니다. – mnel

답변

1

R (벡터화 된 함수)의 벡터화는 백그라운드에서 C로 실행됩니다. 수시로 충분히 빠른 ...

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 

는 훨씬 더 빠른 것으로 기대하지 마십시오.