memcpy 대 C의 할당
어떤 상황에서 memcpys가 최신 인텔/AMD 하드웨어에서 할당된 작업을 능가할 것으로 예상해야 합니까?저는 32비트 인텔 플랫폼에서 GCC 4.2.x를 사용하고 있습니다(하지만 64비트에도 관심이 있습니다).
그들이 과제를 능가할 것이라고 기대해서는 절대 안 됩니다.그 이유는 컴파일러가memcpy
(최적화 플래그를 사용하는 경우) 어쨌든 더 빠를 것으로 생각될 때.그렇지 않고 구조가 레지스터에 들어갈 정도로 상당히 작다면 메모리 액세스가 전혀 필요 없는 직접 레지스터 조작을 사용할 수 있습니다.
GCC는 내부적으로 레지스터/메모리 셀을 직접 변경할 때 또는 사용할 때를 결정하는 특별한 블록 이동 패턴을 가지고 있습니다.memcpy
기능.구조를 할당할 때 컴파일러는 컴파일 시에 이동의 크기를 알고 있으므로 작은 복사본을 롤롤 해제(루프 대신 일렬로 n번 이동)할 수 있습니다.메모-mno-memcpy
:
-mmemcpy
-mno-memcpy
Force (do not force) the use of "memcpy()" for non-trivial block moves.
The default is -mno-memcpy, which allows GCC to inline most constant-sized copies.
사용할 때 누가 더 잘 알겠습니까?memcpy
컴파일러 자체보다?
언급URL : https://stackoverflow.com/questions/324011/memcpy-vs-assignment-in-c
'programing' 카테고리의 다른 글
파워셸 퇴장 중지 (0) | 2023.10.17 |
---|---|
캐리지 리턴 인 C? (0) | 2023.10.17 |
PowerShell로 문자열을 분할하고 각 토큰으로 작업 수행 (0) | 2023.10.17 |
Wordpress JSON API를 사용하여 사용자 지정 필드(이미지) 가져오기 (0) | 2023.10.17 |
디브 내부의 스판 요소를 수평으로 가운데 두려면 어떻게 해야 합니까? (0) | 2023.10.17 |