|
제가 연산 시간에 대해서 갑자기 궁금한 점이 생겨서 한가지 실험을 하였습니다.
class a{
public:
int a;
int b;
int c;
}
class b{
public:
int getA(){
return a;
}
int getB();
int getC();
int setA(int A){
a = A;
}
int setB();
int setC();
private:
int a;
int b;
int c;
}
int main(){
a pub[10000];
b pri[10000];
int i,j;
for(i=0;i<10000;i++){
for(j=0;j<10000;j++){
//pub의 값끼리 더하기 연산(ex pub[i].a = pub[i].b + pub[i].c;)
}}
//연산하는데 걸린 시간 구하기.
for(i=0;i<10000;i++){
for(j=0;j<10000;j++){
//pri의 값끼리 더하기 연산(ex) pri[i].setA(pri[i].getB() + pri[i].getC()); )
}}
//연산하는데 걸린 시간 구하기.
}
이렇게 했을 때, public과 private 값의 연산 시간의 차이가 거의 30배 정도 차이가 났습니다.
실제 연산 양으로 따지면 대략 3~4배 일텐데 어째서 이렇게까지 차이가 많이 나는지 궁급합니다.
이 경우 이렇게 시간이 많이 걸리게 된 것은 IO연산 때문인가요? 아니면 L2캐쉬 관련? 그것도 아니면 뭔가 pipe line 쪽에서 꼬이게 된 경우인가요?
그리고 보안상 문제가 없고 속도가 중요하다면 그냥 클래스 안의 값을 전부 public으로 처리하는게 더 좋을까요?
|