이 두 프로그램 중 더 빠르게 실행되는 프로그램은 무엇입니까? 첫 번째는 변수를 다시 할당하는 두 개의 함수에 대한 포인터의 배열이고, 두 번째는 동일한 방식으로 변수를 다시 할당하는 두 개의 사례의 전환입니다.스위치를 사용하거나 함수 배열을 정의하는 것이 더 빠릅니까?
1 :
#include <iostream>
void w (int &z);
void y (int &z);
int main(int argc, const char * argv[]) {
void (*p[2]) (int &a) = {w,y};
int s = 0;
for(int i=0;i<1000;i++) {
p[s](s);
}
return 0;
}
void w (int &z) {
z = 1;
}
void y (int &z) {
z = 0;
}
2 :
일반적으로#include <iostream>
int main(int argc, const char * argv[]) {
int s = 0;
for(int i=0;i<1000;i++) {
switch (s) {
case 0:
s = 1;
break;
case 1:
s = 0;
break;
}
}
return 0;
}
, 당신은 컴파일에서 알고있는 경우 switch 문을 정의하는 대신 함수 포인터의 배열을 사용하는 경우 프로그램을 더 빠르게 수행 변수의 현재 값에 따라 수행 할 지침은 무엇입니까? 또는 switch 문이 더 빠릅니까? 아니면 둘 다 똑같습니까?
이미 최적화 수준을 사용하여 측정 했습니까? –
첫 번째 예제는 내 피부를 크롤링합니다. – DeiDei
표시되는 두 프로그램은 실제로는 동일하지 않으며 엄격하게 비교할 수 없습니다. –