자료구조

[C언어/자료구조] 프로그램 수행 시간 측정

지방시 2023. 2. 19. 03:33

[수행 시간 측정] 1부터 n까지의 합을 구하는 프로그램을 다음과 같이 3가지 방법으로 알고리즘을 만들어보고 각 알고리즘들을 실제로 구현하여 각 알고리즘의 실제수행 시간을 측정하여 이론적인 분석과 같게 나오는지를 조사해보라.

 

알고리즘 A: sum = n(n + 1)/2공식사용

알고리즘 B: sum = 1 + 2+ + n

알고리즘 C: sum = (1) + (1 + 1) + (1 + 1 + 1) + , (1 + 1 + + 1)

 

수행 시간측정을 쉽게 하기 위하여 n을 상당히 크게 하고 중간에 고의적인 시간지연함수를 넣거나 같은 합산을 여러 번 반복하라. n값에 대하여 수행 시간을 측정하여 표로 나타내라.

 

알고리즘 A 코드

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h> 

int main() {
	clock_t start, end;
	double result;
	int n, sum = 0;

	start = clock(); 

	printf("숫자를 입력해주세요\n");
	scanf_s("%d", &n);

	Sleep(3000);

	sum = n * (n + 1) / 2;
	
	end = clock();
	result = (double)(end-start) / CLOCKS_PER_SEC;

	printf("sum=%d \n", sum);
	printf("%f 초입니다. \n", result);
	return 0; 
}

 

알고리즘B 코드

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h> 

int main() {
	clock_t start, end;
	double result;
	int n, sum = 0;

	start = clock(); 


	printf("숫자를 입력해주세요\n");
	scanf_s("%d", &n);

	Sleep(3000);

	for (int i = 0; i <= n; i++) {
		sum += i;
	}
	
	end = clock();
	result = (double)(end-start) / CLOCKS_PER_SEC;

	printf("sum=%d \n", sum);
	printf("%f 초입니다. \n", result);
	return 0; 
}

 

알고리즘C 코드

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h> 

int main() {
	clock_t start, end;
	double result;
	int n, sum = 0;

	start = clock(); 


	printf("숫자를 입력해주세요\n");
	scanf_s("%d", &n);

	Sleep(3000);

	for (int i = 1; i <= n; i++) {
		for (int j = 0; j < i; j++) {
			sum += 1;
		}
	}
	
	end = clock();

	result = (double)(end-start) / CLOCKS_PER_SEC;

	printf("sum=%d \n", sum);
	printf("%f 초입니다. \n", result);

	return 0;
}

 

수행 시간 측정 결과 표


n = 100 n = 1000 n = 10000
A sum=5050
4.241000
sum=500500
4.584000
sum=50005000
5.104000
B sum=5050
4.059000
sum=500500
5.001000
sum=50005000
5.003000
C sum=5050
3.845000
sum=500500
4.889000
sum=50005000
5.481000