http://stackoverflow.com/a/26959685/1030861
자 visual studio 2013에만 해당된다는건데, 잘 봐바. 지 고집피우자고 링크 안볼 거 같으니까 걍 여기다가 인용한다.
What we have here is actually stranger than just memcpy vs. memmove. It's a case of the intrinsic optimization actually slowing things down. The issue stems from the fact that VS2013 inlines memcopy like thus:
; 73 : memcpy(store[i % 100], data, sizeof(data));
...
movups xmm0, XMMWORD PTR [rdx]
movups XMMWORD PTR [rcx], xmm0
movups xmm1, XMMWORD PTR [rdx+16]
movups XMMWORD PTR [rcx+16], xmm1
movups xmm0, XMMWORD PTR [rdx+32]
movups XMMWORD PTR [rcx+32], xmm0
movups xmm1, XMMWORD PTR [rdx+48]
movups XMMWORD PTR [rcx+48], xmm1
The issue with this is that we're doing unaligned SSE loads and stores which is actually slower than just using standard C code. I verified this by grabbing the CRTs implementation from the source code included in with visual studio and making a my_memcpy
시발 저 글이 뜻하는게 뭐냐면, 컴파일러가 memcpy같은 애들을 libc의 구현을 호출하지 않고 그냥 인라이닝 시켜버릴 수도 있는데 (gcc에서는 __builtin_memcpy같은 류로 : https://gcc.gnu.org/onlinedocs/gcc-5.3.0/gcc/Other-Builtins.html), vs 2013에서는 unaligned access instruction인 movups를 이용해서 인라이닝하는 코드를 생성한다는거야. 그래서 실제로 libc의 memcpy를 호출하는것보다도 느리고, 심지어는 *d++ = *s++; 같은 c 코드보다도 느려진다는 거다. 코세 말대로 unaligned access가 aligned access보다 빠르면 저런 일이 생길리가 없지.
그래, 사실 이런거 가져다가 인용한다 해도 코세가 인정할거라고는 생각 안한다. 그래서 이제는 그냥 코세랑 엮이지 말아야겠어. 이 글을 마지막으로 내가 이 주제로 글 쓰는일 없을거다. 그동안 시끄럽게 해서 프갤러들한테 미안하다.
하... 좆나 구글링해서 목구녕에 자료 쑤셔넣어줘도 읽지를 않으니, 말을 해도 못 알아들으니 솔직히 이길 자신이 없다.
형 형처럼 그럴듯한 프로그램 만들려면
뭐배워야댐
난 왜 배워도배워도 개초딩 실업계수준같지
코세횽얘긴 unaligned access가 aligned access보다 무조건빠르다는게아니라 빠른경우가있으니 최적화에서 그런경우를 고려하는게 잘못된게아니다라는얘기아님? 저가잘못이해한것? 쿠캬캬횽얘긴 코세횽이 unaligned access > aligned access 라고 우긴다는거고 kdlp글에서 unaligned access를 최적화에 고려한다는게 잘못됐다는거고
ㄴ ㅋㅋ 얘는 자기 주장에 확신도 없으면서 남털려고하네
어. 애초에 kldp에서부터 내가 얘기했던게 'c/c++에서는 undefined behavior니까 쓰지 말라'는 건데 코세는 그냥 써도 된다는거고, 어쩔땐 성능이 더 좋다는데, 직접 해보니까 세그폴트 뜨는것까지 보여줬는데 겁나 개소리만 자꾸 해서 짜증난다. 최적화 옵션만 높여줘도 세그폴트가 뜨는 코드가 어디가 최적화를 고려한 코드냐. 진짜 이해가 안된다. 그러면서 지 코드는 올리지도 않고 개 잡소리만 뻘뻘
ㄴ님처럼 누구털고 누구시비걸고싶어서 안달난사람아니라 물어보는건데 뭐눈엔 뭐만보인다고 ㅋㅋㅋ
undefined behavior는 잘쓰면 보약이고 못쓰면 독약같은것아님? 이것도 그런부분아닌가요 코세횽이 뭐 막아무때나 개나소나 unaligned access 쓰는게 다좋다는게아니자늠? 확실히 좋은경우가있고 그러기에 최적화에 고려하는게 나쁜게아니라는건데, 그 비교법으로 쿠캬캬형한태 이런저런조건에서 aligned access로 짜오면 unaligned access로 더좋게 만들어서 보여주겠다는거잖음?
그냥 서로 다른의견이라고 생각하고 싸우고있는부분자체가 약간 다르다는것 같다는거임. 서로주장하는 부분이
쿠캬캬횽은 undefined behavior에 이렇게 짜서봐도 아니다싶은게 보이는데 왜그걸고려하냐 라는거고. 코세횽은 이런저런거 다 고려해서 짜면 더좋은성능으로 사용가능하니까 고려할 가치가 있는 최적화 요소라는거고... 그런거아님?
열심히 니 손으로 쓴 글 번복하며 딸쳐라 kukyakya야.
잘 쓰면야 보약 아닌게 어딨겠냐. 근데 언젠가는 컴파일러든 최적화 옵션이든 바뀔 때마다 오작동할 여지가 남아있으니까 쓰지 말라는거지. i++ + ++i도 잘 쓰면 보약 아니겠어?
거봐 안읽을거랬잖아 ㅋㅋㅋ x86에 vs만 붙잡고 사는 학부생이면 몰라 임베디드도 한다는 새끼가 저런다는게 이해가 안되네 ㅋㅋㅋ 너나 나나 피차 피곤하니까 고만하자.
ㄴ 피유~ 뷰웅신. 승부는 시작전에 났다고 했잖아. 니가 개소리해서 시작된거야.
니가 짜보고 니가 깨달으면 니가 틀렸다는걸 깨달을 문제였음. 첨부터 말했지 않나? ㅋㄷㅋㄷ
kukyakya 승!!! 이건 누가봐도 쿠캬캬 말이 맞네
http://gall.dcinside.com/board/view/?id=programming&no=571799