memcpy 에 직결해 놓은건 그저께 새벽에 내가 참고하라고 던져준 안정성 처리 코드처럼 별 다른 메카니즘이 없기 때문.

애초에 성능테스트에 memcpy를 타는 경우는 넣지도 않았음. (그랬으면 스샷에 속도가 같게 나오겠지)


총 8가지 케이스가 있음.


tgt 주소가 align 되지 않은 경우 -> 일단 한쪽을 맞추는건 쉬움. 포인터가 두개이기에 문제가 되는것. strlen 으로 시비걸었던 ㅉㅉ의 멍청함

두 사람 다 tgt 주소는 간단히 맞추고 시작함.

src 주소가 align 되지 않은 경우

모두 align 된 경우 -> 순풍순풍

모두 align 되지 않은 경우 -> 루프만 맞추고 짜투리 처리는 하다가 나가야했음


위의 4가지 것들에 대해 각각 32비트, 64비트인 경우가 있음


내가 작성해서 올린 코드 중

case 0: 즉 src 주소가 align 된 경우의 코드에 case 1: 2: 3: 을연결시켜도 모두 잘 돌고 모두 ㅉㅉ보다 빠름. 당연한거임.

넌 4바이트 정렬 밖에 쓴게 없거든.

그나마도 니가 segmentation fault 지랄 헛소리 나불거린거 비트 연산으로 시작주소 풀었던

내 코드랑 전혀 다를바 없게 짠 코드로 말야.

(하지만 windows vc++ 컴파일러로 세그먼테이션 자체를 재연할 수 없없음. -> 이건 애초에 ㅉㅉ 가 딴지건거지 내가 딴지건게 아님.)


거기에 난 non-breaking switch 와 loop unrolling 을 썼고 캐시 크기를 고려해서 작성함. <- 캐시 메카니즘에 대한 고려는 부족 이부분은 개선의 여지가 있음.

그 결과 니 코드 보다 거의 2배 빠름.


src 가 정렬되지 않은 케이스에 대해 작성하다가, (1, 2, 3 나머지가 있는 경우를 각각 짜줘야 되는데 생긴 모양은 똑같음 비트 연산 자릿수만 달라지는 경우)

loop 부분은 코딩해놓고 짜투리 자릿수 계산중이었기 땜에 그냥 성능비교만 올려놓고 간거임.


애초에 case 0 의 코드로 32비트 64 비트 다 맞고 둘 다 너보다 빠른데 성능 오작동 이야기 하는게 웃김.

다른케이스는 덜짰다고 말했잖나?