const int   test_count = 1000;

const int   test_size  = 1000000;


// VC++ 기준으로 4바이트 정렬된 배열 정의

__declspec( align( 4 ) )   char src[ test_size + 4 ];

__declspec( align( 4 ) )   char dst[ test_size + 4 ];



// 컴파일시 배제되지 않도록 test 함수의 결과를 rvalue 로 사용하기 위함

int         result1, result2;


void test1()

{

    result1 += (int)kukyakya_memcpy( dst + 3, src + 1, test_size );

}


void test2()

{

    result2 += (int)kukyakya_memcpy_unaligned( dst + 3, src + 1, test_size );

}


쿠캬캬가 작성한 두 코드를 먼저 테스트 해 보았다.


말 그대로 aligned 를 위해 shift 를 사용한 경우와 아무것도 하지 않은 경우.

어제 내가 정의한 테스트 케이스인 dst + 3, src + 1 을 기준으로 수행.

src 와 dst  를 4바이트 정렬 주소 기준으로 할당했다.


1MB 1000번 수행시 최저 소요클럭을 선택했을 때,


결과는?



셀프 디스.