ARM_core 기반 리눅스 BSP 개발/Raspberry_PI Kernel build

[Raspberry_PI]_time_명령

juniha 2025. 6. 17. 19:47

전체 진행 과정

 

 

사용 코드

 

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 파일에 저장한다

 

실행 결과

.