예를 들어, 노드를 목록에 추가하는 함수 (insertNode
)를 생성하려고합니다. 노드를 추가하거나 배열의 모든 노드를 저장할 때마다 insertNode
을 호출하는 것이 더 빠릅니까 insertNode
을 한 번만 호출하고 배열을 인수로 전달하여 함수가 나머지 작업을 수행하도록 할 수 있습니까?최적화 (C 언어) : 많은 함수 호출과 하나의 함수 호출
코드 예제 :
typedef struct Data {
int *myArray; //the array where all integers are stored
int firstAvailablePos; //the first free position of myArray
} Data;
insertNode(Data *data, int newNum) {
(data->myArray)[data->firstAvailablePos] = newNum;
(data->firstAvailablePos)++;
}
alt_insertNode(Data *data, int *array, int arraySize) {
int i;
for(i = 0; i < arraySize; i++)
(data->myarray)[i] = array[i];
}
그리고 main
에 두 가지 옵션은 다음과 같습니다
많은 기능이
while (...) { ... insertNode(data, newNum); }
하나의 함수 호출
를 호출
더 구체적인 피드백을 생성하는 것입니다 당신이 접근에 코드를 게시 : 여기
당신이 테스트를 실행하는 데 사용할 수있는보다 완벽한 구현입니다. – chux선택해야하는 각 방법마다 하나의 항목을 목록에 추가하는 데 드는 개별 비용에 따라 다릅니다. 그것을 측정 할 수 있습니까? 또는 코드를 게시하고 복잡성을 계산해 봅니다. –
이 경우에는 매번 호출하는 것이 더 최적화 될 것이라고 생각합니다. 배열에 넣는다면 (이것은 작업을 할당하고 비어있는 것을 찾습니다), 전체 테이블을 가져올 때 결국에는 노드를 삽입하는 함수를 호출하기 때문입니다 첫 번째 옵션과 동일한 기능이지만 큰 for 루프가 있어야합니다. – koper89