예, 크기가 큰 개체는 더 작은 개체보다 복사하거나 이동하는 데 더 많은 시간이 걸립니다.
32 개의 정수 배열은 복사하거나 이동할 32 개의 작업을 필요로합니다.
1024 개의 정수 배열은 복사하거나 이동할 1024 개의 작업을 필요로합니다.
질문은 시간의 차이가 중요한지 여부입니다. 최신 프로세서의 경우 대부분의 복사 작업은 나노초 수준입니다. 따라서 (대략) 1000 나노초가 프로그램에 영향을 미치게됩니까? 그것은 달려있다. 프로그램이 I/O를 기다리는 데 몇 밀리 초 이상 걸리는 경우 차이가 크지 않을 수 있습니다.
편집 1 :
복사하는 데 소요되는 공간보다 더 많은 공간이 필요할 수 있습니다.
큰 개체의 일반적인 경험 법칙은 개체를 앉아 포인터를 개체로 전달하는 것입니다. 큰 물체를 복사하거나 움직이지 마십시오. 포인터는 공간이 적어서 큰 개체보다 복사 및 이동이 빠릅니다. 또한 포인터에 대한 참조를 선호합니다.
편집 2 : - 스택으로 탑재 스택
복사는 프로세서와 컴파일러의 프로토콜에 따라 달라집니다. 스택이 필요하지 않습니다.
매개 변수와 로컬 변수 할당을 전달하기 위해 스택을 사용하는 고전적인 구현에서 오버 헤드는 객체를 복사 할뿐만 아니라 스택 포인터 변수를 증가시킵니다.
그래서 함수에 32 개의 정수를 전달하면 32 개의 복사 연산과 스택 포인터에 대한 덧셈 연산이 생깁니다.
일반적으로 큰 개체를 스택에 푸시 (복사)하는 데 필요한 시간보다 스택 공간이 더 중요합니다.
컴파일러는 최적화 수준 및 기타 특성에 따라 포인터로 개체를 전달할 수 있습니다.
은 32 개의 정수로 구성된 배열이 128 개의 연산을 처리하고 1024 개의 연산이 4096 개의 연산을 처리하지 않을까요? – name
'현대 프로세서의 경우 대부분의 복사 작업은 복사 또는 이동하기 전에 나노초 단위입니다. 필요한 메모리를 할당해야하며이 작업은 속도 저하의 원인이며 CPU가 수행 할 수 없습니다 그것에 대해 너무 많이; 당신은 초고속 CPU와 느린'malloc'을 가질 수 있으며,이 경우 느린 프로그램을 얻을 수 있습니다. – user2485710
@name "operation"은 클럭주기와 같은 구체적인 단위가 아닌 일반 용어로 사용됩니다. –