글좀 봐주세요. 속도가 다른이유가 궁금합니다. ㅠㅠㅠㅠ
아리솔
For (d=0;d256;d++){}
///////////////////////////////////////////버전1////////////////////////////////////////////if(timeCheck) gettimeofday(&start1, NULL); for( i= countloopsum[d-1]+1; i countloopsum[d-1]+1+countloop[d]; i++){
for(hr=0;hr1600;hr++){ for(hc=0;hc1600;hc++){
Save[hr*HOLOGRAM_COLS+hc]+=(int)((tempCS[(MAGN1*countarray[i][0]+hr)*PFP_COLS
+countarray[i][1]*MAGN1+hc]+mini)*countarray[i][2]); } } } if(timeCheck)gettimeofday(&end1, NULL);
//////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////버전2////////////////////////////////////////////// if(timeCheck)gettimeofday(&confirmstart, NULL);for(sr=0; srSOURCE_ROWS; sr++){ for(sc=0; scSOURCE_COLS; sc++){ tmpDepth= DEP[sr*SOURCE_COLS+sc]; if (d == tmpDepth){ tmpIntensity=(int)INT[sr*SOURCE_COLS+sc]; if((int)tmpIntensity != 0) {
pfpR= MAGN1 * sr; // 오리지날에는 +d
pfpC = MAGN1 * sc;
for(hr=0;hr1600;hr++){for(hc=0;hc1600;hc++){ Save[hr*HOLOGRAM_COLS+hc]+=(int)((tempCS[hc+(MAGN1*sr+hr)*PFP_COLS+sc*MAGN1 ]+mini)*tmpIntensity); } } } } } } if(timeCheck)gettimeofday(&confirmend, NULL);//////////////////////////////////////////////////////////////////////////////////////////////////
}
안녕하세요.코드를 작성하다가 궁금한것이 생겨서 글을 올리게 되었습니다.버전 1과 버전 2 사이에 속도 차이가 있는데저는 버전 1이 속도가 더 빠를것이라고 생각을 했는데이상하게 버전 2가 속도가 더 빨릅니다.그 이유를 모르겠습니다.코드에 대해 설명을 잠시 해 드리면버전 2는 320 x 240 영상을 모두 돌다가 if (tmpDepth!=0 &&tmpIntensity!=0) 를 만족하게 되면이중포문 for (hr=1:1600) for (hc=1:1600)
이 돌게 됩니다.돌면서 미리 만들어 놓은 tempCS[3200][3200]배열에 원하는 값을 불러와tmpIntensity을 곱해고 곱해진 값을Save이라는 1600 x 1600 배열에 누적시켜 저장하게 됩니다.버전 1은 버전 2를 빠르게 하기 위해 counting sort 를 한 결과물을 이용한 것입니다.if (tmpDepth!=0 &&tmpIntensity!=0){countarray[i][0] = sr;
countarray[i][1] = sc;
countarray[i][3] =tmpIntensity;}countloop[d]= 히스토그램의 갯수 입니다.countarray 는 3중 배열이고 각가 들어가는 값은 위에 적혀있는것처럼if (tmpDepth!=0 &&tmpIntensity!=0) 을 만족하는sr, sc, tmpIntensity 가 들어가기 되며 이때 들어간 값들을 미리 sourting 을 해 놓습니다.즉 모양이
실제 데이타가 0 1 3 2 1 1 2 3 0 0 0 0 0 일경우 그림으로 표현한것 입니다.그림으로 표현하자면 이렇식으로 된다고 할까요?아무리 봐도 버전 1이 더 빨라야 하는데 이상하게 버전 2가 더 빠릅니다.버전 2에는 if 문도 있고 for 문도 버전 1에 비해 훨씬 많이 도는데 왜 버전 2가 더 빠른건가요?제가 설명을 좀 잘 못해서.. 이해가 잘 되셨는지 모르겠습니다.혹시 이해가 잘 안되시는 부분 있으시면 질문해주세요 ㅠ
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2692451 | 이 문제좀 풀어주세요 ^^ | 게자리 | 2025-04-23 |
2692424 | 2차원배열 자료입력질문이요! (1) | 똘끼 | 2025-04-22 |
2692401 | 유닉스안에서 C언어를 이용한 명함 만들기 입니다; 이해안가는 부분이있네요 | 2gether | 2025-04-22 |
2692374 | 고수님들 댓글 마니부탁해요!!! (2) | 엄지 | 2025-04-22 |
2692343 | scnaf에 자꾸 선언을 참조하라는데;; (8) | 도래 | 2025-04-22 |
2692282 | 도스상에서 생성된 exe파일에 press~ 뜨게 하기 (4) | 회사원 | 2025-04-21 |
2692256 | scanf("%*c"); ㅠㅠ 고수님들 | 거북이 | 2025-04-21 |
2692230 | 하노이탑 질문입니다. (1) | 미쁘다 | 2025-04-21 |
2692210 | 정보 올림피아드 문제인데.. 풀이 과정이 궁금합니다.(재귀함수) (5) | 물티슈 | 2025-04-20 |
2692144 | C언어와 리눅스에 대한 질문입니다. | 싴흐한세여니 | 2025-04-20 |
2692114 | 컨텍스트 스위칭하는데 걸리는 시간 측정.. | YourWay | 2025-04-19 |
2692086 | 간접참조 연산자, 증감연산자 질문이용! (2) | 블랙캣 | 2025-04-19 |
2692056 | 주석좀 달아주세요. 몇개적엇는데 몇개만달아주세요. (2) | DevilsTears | 2025-04-19 |
2691978 | 진수 쉽게 이해하는법... (3) | 지지않는 | 2025-04-18 |
2691949 | getchar() 한 문자를 입력받는 함수 질문 | 채꽃 | 2025-04-18 |
2691919 | 배열 정렬 및 합치기 질문입니다. | 사과 | 2025-04-18 |
2691845 | c언어왕초보 질문이 있습니다........ | 루나 | 2025-04-17 |
2691815 | void add(int num); 함수... (4) | 살랑살랑 | 2025-04-17 |
2691756 | 명령 프롬프트 스크롤바가 없어요 | 두메꽃 | 2025-04-16 |
2691725 | 자료구조에 관련해서 질문이 있어 글을 올립니다. | 누리알찬 | 2025-04-16 |