전체 진행 과정

사용 코드
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#include <stdio.h> // 표준 입출력 라이브러리 포함 (printf 사용)
// 재귀적으로 팩토리얼을 계산하는 함수
// 입력: n (계산할 숫자)
// 반환: n!
int factorial(int n) {
if (n <= 1) // 종료 조건: n이 1 이하일 때 팩토리얼은 1
return 1;
else
return (n * factorial(n - 1)); // 재귀 호출: n * (n-1)!
}
// 반복문으로 팩토리얼을 계산하는 함수
// 입력: n (계산할 숫자)
// 반환: n!
int factorial_iter(int n) {
int k, v = 1; // k: 루프 카운터, v: 팩토리얼 결과값을 누적
for (k = n; k > 0; k--) // n부터 1까지 반복
v = v * k; // v에 k를 곱하여 팩토리얼 계산
return v; // 최종 계산된 팩토리얼 값 반환
}
// 프로그램의 시작점
// n=5의 팩토리얼을 반복문 함수를 통해 계산 후 출력
void main(void) {
int n = 5; // 팩토리얼을 계산할 숫자
// n의 팩토리얼을 계산하고 출력 (Windows 스타일 줄바꿈 \r\n)
printf("%d factorial is %d\r\n", n, factorial_iter(n));
}
|
cs |
gprof로 분석
|
1
2
3
4
5
6
7
8
9
10
11
|
gcc -pg -o hello hello.c # hello.c 파일을 컴파일하여 hello 실행 파일 생성
# -pg 옵션은 gprof용 프로파일링 코드 삽입 (성능 측정용)
./hello # 생성된 hello 실행 파일을 실행
# 실행 종료 시 gprof용 데이터 파일 gmon.out 생성됨
gprof hello gmon.out > analysis.txt # gprof로 hello 실행 파일과 gmon.out 데이터 분석
# 분석 결과를 analysis.txt 파일로 저장
more < analysis.txt # analysis.txt 파일 내용을 페이지 단위로 출력
# gprof 분석 결과를 터미널에서 확인
|
cs |
gcc -pg -o hello hello.c
- gcc로 hello.c 파일을 컴파일한다.
- pg: gprof용 프로파일링 코드를 삽입한다.
- o hello: 출력 실행 파일을 hello로 생성한다.
-Optimize 옵션 변경
- gcc -O0 # 최적화 없음 (디버깅 용)
- gcc -O2 # 일반적인 최적화
- gcc -O3 # 최대 성능 최적화
- gcc -Os # 사이즈 최적화
./hello
- 생성된 실행 파일(hello)을 실행된다.
- 실행이 끝나면 gmon.out이라는 성능 데이터 파일이 생성된다.
- 이 파일에는 함수별 호출 횟수, 실행 시간 등의 정보가 기록된다.
gprof hello gmon.out > analysis.txt
- gprof 명령어로 gmon.out과 hello 실행 파일을 분석한다.
- 분석 결과를 analysis.txt 파일에 저장한다
실행 결과
.

'ARM_core 기반 리눅스 BSP 개발 > Raspberry_PI Kernel build' 카테고리의 다른 글
| [Raspberry_PI]_SDcard_수동Mount (0) | 2025.06.18 |
|---|---|
| [Raspberry_PI]_Linker_Script (0) | 2025.06.17 |
| [Raspberry_PI]_env_환경 변수 (0) | 2025.06.17 |
| [Raspberry_PI]_LED_BLINK (0) | 2025.06.17 |
| [Raspberry_PI]_간단 정리 (0) | 2025.06.17 |