일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스케줄링
- 백준
- 그리디 알고리즘
- 병행성 관련 오류
- 다이나믹 프로그래밍
- Direct12
- directx
- 알고리즘
- 영속성
- 타입 객체
- 프로그래머스
- 컨디션 변수
- OS
- DirectX12
- 디자인패턴
- 멀티쓰레드
- 동적계획법
- 병행성
- 멀티프로세서
- DirectX 12
- codility
- 자료구조
- 락
- 그리디알고리즘
- 다이나믹프로그래밍
- 쓰레드
- 운영체제
- 렌더링 파이프라인
- I/O장치
- 파일시스템 구현
- Today
- Total
기록공간
2-4-11장. 애플리케이션 성능 개선 - C 본문
소스 코드 최적화
나쁜 코드(Bad Code)를 배제하고, 클린 코드(Clean Code)로 작성하는 것을 뜻한다.
-
클린 코드(Clean Code) : 누구나 쉽게 이해하고 수정 및 추가할 수 있는 단순, 명료한 코드, 즉 잘 작성된 코드
-
나쁜 코드(Bad Code) : 프로그램의 로직(Logic)이 복잡하고 이해하기 어려운 코드로, 코드의 로직이 서로 얽혀 있는 스파게티 코드, 동일한 처리 로직이 중복되게 작성된 코드 등이 여기에 해당
-
나쁜 코드로 작성된 애플리케이션의 코드를 클린 코드로 수정하면 애플리케이션의 성능이 개선됨
-
클린 코드 작성 원칙
-
가독성
-
누구든지 코드를 쉽게 읽을 수 있도록 작성
-
코드 작성 시 이해하기 쉬운 용어를 사용하거나 들여쓰기 기능 등을 사용
-
-
단순성
-
코드를 간단하게 작성
-
한 번에 한 가지를 처리하도록 코드를 작성하고 클래스/메소드/함수 등을 최소 단위로 분리
-
-
의존성 배제
-
코드가 다른 모듈에 미치는 영향을 최소화
-
코드 변경 시 다른 부분에 영향이 없도록 작성
-
-
중복성 최소화
-
코드의 중복을 최소화
-
중복된 코드는 삭제하고 공통된 코드를 사용
-
-
추상화
-
상위 클래스/메소드/함수에서는 간략하게 애플리케이션의 특성을 나타내고, 상세 내용은 하위 클래스/메소드/함수에서 구현
-
-
소스코드 최적화 유형
-
클래스 분할 배치 : 하나의 클래스는 하나의 역할만 수행하도록 응집도를 높이고, 크기를 작게 작성
-
느슨한 결합(Loosely Coupled) : 인터페이스 클래스를 이용하여 추상화된 자료구조와 메소드를 구현함으로써 클래스 간의 의존성을 최소화
-
코딩 형식 준수 : 코드 작성 시 다음의 형식을 준수
-
줄 바꿈 사용
-
개념적 유사성이 높은 종속 함수 사용
-
호출하는 함수는 선배치, 호출되는 함수는 후배치
-
지역 변수는 각 함수의 맨 처음에 선언
-
-
좋은 이름 사용 : 변수나 함수 등의 이름은 기억하기 좋은 이름, 발음이 쉬운 용어, 접두어 사용 등 기본적인 이름 명명 규칙(Naming Rule)을 정의하고 규칙에 맞는 이름을 사용
-
적절한 주석문 사용 : 소스 코드 작성 시 앞으로 해야 할 일을 기록하거나 중요한 코드를 강조할 때 주석문을 사용
소스코드 품질 분석 도구
소스 코드의 코딩 스타일, 코드에 설정된 코딩 표준, 코드의 복잡도, 코드에 존재하는 메모리 누수 현상, 스레드 결함 등을 발견하기 위해 사용하는 분석 도구이다.
-
정적 분석 도구
-
작성한 소스 코드를 실행하지 않고 코딩 표준이나 코딩 스타일, 결함 등을 확인하는 코드 분석 도구
-
비교적 애플리케이션 개발 초기의 결함을 찾는데 사용되고, 개발 완료 시점에서는 개발된 소스 코드의 품질을 검증하는 차원에서 사용된다.
-
동적 분석 도구로는 발견하기 어려운 결함을 찾아내고, 소스 코드에서 코딩의 복잡도, 모델 의존성, 불일치성 등을 분석할 수 있다.
-
종류 : pmd, cppcheck, SonarQube, checkstyle, ccm, cobertura 등
-
-
동적 분석 도구
-
작성한 소스 코드를 실행하여 코드에 존재하는 메모리 누수, 스레드 결함 등을 분석하는 도구
-
종류 : Avalanche, Valgrind 등
-
'자격증공부 > 정보처리기사_필기' 카테고리의 다른 글
2-5-2장. 모듈 연계를 위한 인터페이스 기능 식별 - A (0) | 2020.09.07 |
---|---|
2-5-1장. 모듈 간 공통 기능 및 데이터 인터페이스 확인 - C (0) | 2020.09.07 |
2-4-10장. 애플리케이션 성능 분석 - C (0) | 2020.09.06 |
2-4-9장. 결함 관리 - B (0) | 2020.09.06 |
2-4-8장. 테스트 자동화 도구 - B (0) | 2020.09.06 |