이미지 처리 하는데요..
콩알녀
속도 면에서 장점 있는 것 골라 주세요~!!
이미지(2차배열과 같음)에서 블록 별로 8*8블록으로 나눠서 블록별 처리를 한다면
1. 아래와 같이 for문 4개를 사용해서 전체적인 포문은 8번픽셀 마다 이동하고 그안에 2개의 for문은 실제 처리를 하는 방법이구요..
for( int i=0;iHeight;i+=8)
{
for(int j=0;jWidht;j+=8)
{
for( int y=0;y8;y++)
{
for( int x=0;x8;x++)
{
// 더하기 연산이나 이것저것...
}
}
}
}
2.
각자의 블록을 좌표를 정해놓고 아래와 같이..
for( int y=0;y8;y++)
{
for( int x=0;x8;x++)
{
// 더하기 연산이나 이것저것...
}
}
for( int y=8;y16;y++)
{
for( int x=0;x8;x++)
{
// 더하기 연산이나 이것저것...
}
}
for( int y=16;y24;y++)
{
for( int x=0;x8;x++)
{
// 더하기 연산이나 이것저것...
}
}
....
...
...
이런식으로 일일이 블록을 써주는 것과 어떤게 더 빠르게 연산을 하는건가요?
가독성은 두번째 방법이 좋은것 같긴한데..
속도면에서만 평가 내려주시기 바랍니다..~~^^;;
-
해대기
네 감사합니다^^;;
-
마법
얼마나 큰 이미지인지는 모르겠지만 처리속도에서 거의 차이를 느끼지 못할 것 같네요.
만약 위의 코드가 굉장히 많이 반복된다면 그 차이가 느낄 수 있는 정도가 될지도 모르겠네요.
보통 for문을 풀어버리면 코드는 더 길어지지만 for문 처리에 들어가는 오버헤드가 줄어들어
수행 속도가 더 빨라지며 컴파일러가 더 최적화된 코드를 만들어 내기에 좋습니다.
아래 쪽 코드가 더 빠르게 연산이 이루어지겠네요