일반적으로 파스칼의 for loop 가 C++의 for loop보다 빠르다고 알려져 있습니다.
저는 이미지 프로세싱관련 일을 많이 하기떄문에 for loop 를 많이 사용하는편인데
장난삼아 파스칼과 C++로 동일한 내용을 코딩해 보면 파스칼이 2~3배정도
빠릅니다.
이유는 여러분도 잘아시다시피 파스칼에서는 for 구문자체가 비교를 하지 않기
때문일거라 추정해 봅니다.
C++ 에서는 주로 많이 코딩하시는 스타일이 가운데 블럭에서 카운터의 조건을
검사하기때문에 느려질거라 생각됩니다.
파스칼:
for i := 0 to Bitmap.Height-1 do
...
C++
for (int i = 0; i < Bitmap->Height; i++)
...
위와같은 형식이 아마도 많은분들이 코딩하시는 스타일 일거라 생각됩니다.
하지만 다음과 같이 for 구문을 수정하면 파스칼과 동일한 속도다 나옵니다.
for (int ic=Bitmap->Height, i=0; ic--; i++)
...
파스칼처럼 i값에 대한 비교가 아니라 단지 Counter ic의 값이 0인지 아닌지만
체크 하도록 바꾼겁니다.
많은 분들이 델파이가 빠르냐 VC가 빠르냐 이런문제로 싸우시던데
정작 C++로 파스칼로 속도를 낼수 있는 기법에 대하여 이야기가 없길래
혹시 초보분들한테는 유용한 정보가 되지 않을까 해서 올려봅니다.
전부 다아시는 내용을 올려서 좀 쑥스럽네요.
초보분들이 속도 최적화에 도움이 되셨으면 좋겠습니다.
저도 물론 초보지만 ;;
|
for문 자체는 속도가 느리므로 while등으로 바꾸라고...
설마 고수님들이 그걸 몰라서 옥신 각신 하는거는 아니겠지요
어째 좀 미심적습니다. 그려....
하지만 조건치를 님과 같이 바꾸므로써 속도를 올릴수 있다니...
저도 for문을 많이 사용해야 겠습니다.
흐....
그럼