주장 1. loop 내에서 변수를 선언하면 이 변수의 생성에 비용이 들기 때문에 변수 선언은 하지 않는 편이 좋다.

 

    for(int i=0; i<100; i++){

        int var = func();

    }

 

    int var;

    for(int i=0; i<100; i++){

        var = func();

    }

 

사실

- 기본형(int, float )이라면 걱정할 만한 속도 차이가 나지 않고 상황에 따라서는 오히려 늦게 된다.

- 클라스에서는(생성자의 무거움에 의해)무시할 수 없는 차이가 날 수도 있다

- 컴파일러가 최적화 해주기도 한다.

결론

무거운 생성자를 가진 클래스 변수를 그룹 내에서 선언하는 것은 피하는 것이 좋다.

 

 

 

주장 2. loop 하는 것에도 비용이 든다. 1loop에서 많은 작업을 하는 것이 좋다.

 

 

    for(int i=0; i<100; i++){

        func();

    }

 

    int var;

    for(int i=0; i<10; i++){  // loop 횟수는 1/10

        func();

        func();

        func();

        func();

        func();

        func();

        func();

        func();

        func();

        func(); // loop 내에서 같은 처리를 10번 한다

    }

 

 

사실

- loop 내의 처리가 아주 가볍지 않는 한 loop 비용은 큰 문제가 되지 않는다.

- loop 내의 처리가 가벼워도, 100, 200회 정도에서는 loop 비용은 큰 차이가 나오지 않는다.

- 이것은 사람이 할 일은 아니다. 컴파일러에게 맡겨야 한다.

 

결론

(특별한 목적이 없는 한)사람이 loop 전개는 하지 않아야 한다.

 

 


 

 

주장 4. 후치 증가는 임시 객체를 생성하므로 임시 객체를 생성하지 않는 전치 증가가 빠르다.

 

    for(int i=0; i<100; i++)

 

    ↓

 

    for(int i=0; i<100; ++i)

 

 

실제

- 루프의 비용은 별일이 없으면 신경 쓰지 않아도 된다.

- 상황에 따라서는 오히려 늦어지는 경우도 있는 것 같다.

 

결론

취향의 문제.

 

 

 

출처: http://qiita.com/EqualL2/items/472035c3f0d3e34734a8

 

저작자 표시
신고
by 흥배 2015.09.10 09:51
| 1 |

티스토리 툴바