사실 깜짝 놀라긴 했다. 저 정도로 느리진 않을텐데? 라고 생각했거든.
그래서, 윈도 깔고 vs 2015 깔고 직접 해봤어. 하 진짜 내가 이짓을 왜 하고 있나 몰라.
내가 썼던 글에 gcc의 -fno-tree-loop-distribute-patterns 옵션 얘기를 했었는데, 얘가 코드를 보고 memcpy를 부르면 되겠다 싶을때 지맘대로 memcpy 호출로 바꿔버리는걸 막아주는 거거든.
근데 VS 에서도 똑같은 짓을 하더라고.
내 생전 x86 어셈블리는 처다보도 안할랬는데 vs에 디버거에 생전 안하던 짓을 한다 덕분에.
일단 my_memcpy_byte_only 부터 까보자.
183: void *my_memcpy_byte_only(void* __restrict dest, const void* __restrict src, std::size_t n)
184: {
...
00007FF770D44183 je my_memcpy_byte_only+29h (07FF770D44199h)
00007FF770D44185 call memcpy (07FF770D45628h)
00007FF770D4418A lea rax,[rbx+rdi]
...
내가 x86 잘 모르긴 하는데 call이라는 인스트럭션이 memcpy를 호출하는 건 확실한것 같아뵌다??
my_memcpy_unaligned도 까보면,
164: void *my_memcpy_unaligned(void* __restrict dest, const void* __restrict src, std::size_t n_byte)
...
00007FF770D441DC shl r8,3
00007FF770D441E0 call memcpy (07FF770D45628h)
172:
내 눈이 니 눈마냥 리신이 된게 아니라면 얘도 memcpy 호출하는게 확실한것 같은데.
내가 구현한 my_memcpy는 뒤져봐도 memcpy를 호출하는 부분이 잘 안뵈네.
코세야. 내가 짠게 vc++ libc의 memcpy보다 느린건 뭐 부끄럽지만 사실로 인정할게.
근데 그렇다고 내 코드가 unaligned access가 aligned access보다 빠르다는 증거는 되지 않는단다. 내 글에도 써놨었는데 진짜 쫌만 대가리가 돌아갔으면 저게 unaligned access가 빨라서 그런건지 memcpy 호출로 바껴서 그런건지 한번쯤은 생각해봤을 것 같은데말야.
내가 vs를 거의 안만져봐서 vs에 해당 옵션이 있는지 잘 모르겠다. 스택오버플로에 질문글(http://stackoverflow.com/questions/36424839/how-to-prevent-vc-from-emitting-calls-to-memcpy) 싸놨는데 vs에서도 memcpy 호출로 대치하는걸 방지하는 옵션이 있으면 그거 켜보고 다시 수행해서 올릴게.
마지막으로, 뭐 남의 코드 품평해놓고 니 코드는 안올리는건 어디서 배워먹은 상놈 집안 매너니? ㅋㅋㅋㅋ 뭐 예상은 했지만 진짜로 그럴줄은 몰랐네. 내 예상에 지 코드를 안올리는 이유가 사실은 지가 작성한 코드가 없거나, 아님 지도 지가 짠거 보니까 얼라인먼트를 맞추고 있다거나 둘 줄 하나 같은데, 한번 올려보렴.
코세나 너나 실력자인건 확실한듯.. 여기 프갤러들 아무도 너네들이 올리는거 이해못함
ㅋㅋㅋ 맞아 적당히해. 이런거 보면 같은 프로그래머 맞는지 내 정체성에 혼란이 온다
http://gall.dcinside.com/board/view/?id=programming&no=571697
그러게 내가 말했지. 짜보고 느끼라고. 네 무식함을.
아 이 병신새끼는 말귀를 못알아먹네... 니가 말하는게 'unaligned access가 aligned access가 더 빠르다'라는거 아냐? 지금 내 코드가 그 증거가 안된다는데 무슨 개소리여? gcc에서 unaligned access가 세그폴트가 뜨는걸 눈앞에 가져다줘도 보질 않네. 이러니 내가 장님이라 그러지.
memcpy가 aligned access로 되어 있고, 지금 내 unaligned access를 하려고 했던 코드가 memcpy로 대체돼서 실제로는 unaligned access가 안일어난다니까? 아직도 내 말이 뭔 말인지 모르겠니?
ㄴ 니가 닭대가리지 ㅋㄷ
코세는 자신이 질거같으니까 무리수를 던지기 시작함.
내가 진짜 코드도 필요없고 'UB가 아닌 unaligned access 한줄' 만 가져다 달래도 절대 안갖다줌. 사실 저건 못갖다주는건데, 인정을 절대 안하지. 코세는 집에 아마 하얀색이면서 검은 금송아지가 있을듯.
UB 는 니 첫글에서 배제한 내용이니 자꾸 언급하지 마라.
니 스스로 배제한 내용이야 병신아.
내가 배제했다는게 뭐냐? 'unaligned access는 UB이며 성능저하가 있을 수 있다'라는게 첫 주장이었고, 그래서 니가 말한게 'unaligned access가 aligned access보다 더 빠를 수도 있다'라는거였고, 그래서 memcpy를 짜보니 libc의 memcpy를 호출하도록 되어 있어서 비교가 안되고, 이게 현재 상황인데 여기서 니 주장이 맞다는걸 입증할 수 있는게 뭐가 있냐? 난 시발 gcc로 세그폴트난거 보여줬잖아? 너도 증거를 좀 보여보라니까?