728x90

최적화 4

프리패칭(Prefetching)이란?

프리패칭이란, CPU가 메모리에서 데이터를 필요로 하기 전에 미리 데이터를 가져와 캐시에 저장하는 기술이다. 이를 통해 데이터를 실제로 필요로 할 때 메모리 접근 지연을 피하고, CPU가 기다리지 않고 빠르게 작업을 이어갈 수 있게 된다. 즉, 프리패칭은 데이터를 사전에 준비하여 CPU 대기 시간을 줄이는 기법이다. 프리패칭은 보통 순차적인 메모리 접근 패턴이 있을 때 효과적이다.센서 데이터 처리그래픽 렌더링통신 패킷 처리프리패칭을 사용하면 CPU 대기 시간을 감소시켜 전반적인 성능을 향상시킬 수 있다. 그러나 잘못된 예측으로 불필요한 데이터를 미리 가져오게 되면, 오히려 캐시 오염이 발생하여 성능이 저하될 수 있다. 임베디드 시스템에서는 자원이 한정적이기 때문에, 프리패칭의 예측 정확성을 높이는 것이 ..

CS 2024.11.04

루프 언롤링(Loop Unrolling)이란?

컴퓨터 프로그램의 성능을 최적화하는 중요한 기법 중 하나이다. 반복문을 수동으로 변경하여 반복 횟수를 줄이고, 코드의 성능을 높이는 방법이다. 주로 오버헤드를 줄이고 캐시 효율을 높이는 데 사용된다. 다음과 같은 반복문이 있을 때for (int i = 0; i  루프 언롤링을 적용하면 아래와 같다.for (int i = 0; i 위와 같이 루프 언롤링하면 반복 횟수가 줄어들어 오버헤드 감소가 가능하다.

CS 2024.10.23

[C언어] 단락 평가

C언어 if문에 대해서 찾아보다가 if(조건문 1 && 조건문 2) 일 때 조건문 1이 참일 때 더 효율적으로 작동한다는 이야기를 들었다.그래서 뭐지 하고 찾아보니 이것을 단락 평가(Short Circuit Evaluatin)라고 한다. 단락 평가란, 논리 연산에서 전체 조건이 이미 확실해지면 나머지 조건을 더 이상 평가하지 않는 최적화 기법이다.이것의 핵심은 필요 최소한의 연산만 수행하는 것이다.  예시 코드if (ptr != NULL && *ptr == value) { // ptr이 NULL이 아닐 경우에만 *ptr이 평가됨} ptr이라면 두 번째 조건인 *ptr == value는 평가되지 않는다. 이렇게 함으로써 NULL 포인터 참조로 인한 런타임 오류를 방지할 수 있다. 특정 조건을 먼저 평..

C언어 2024.10.22

[C언어] 인라인(inline) 함수란?

C99부터 지원하는 inline 함수란 말 그대로 함수 호출을 호출된 자리에서 직접 삽입하는 방식의 최적화 기법이다. 일반적으로 함수를 호출하면 함수의 주소로 이동한 후 실행하고, 완료된 후 다시 원래 위치로 돌아온다. 이러한 과정은 시간적 오버헤드를 수반하며, 이는 특히 자주 호출되는 함수일수록 성능에 악영향을 미칠 수 있다. inline 함수는 이러한 문제를 해결하기 위해, 함수 호출 과정 없이 함수의 코드 자체를 호출 지점에 삽입하는 방식으로 최적화를 수행한다. inline 키워드를 사용한다고 해서 모든 함수가 자동으로 인라인 처리되는 것은 아니다. 컴파일러는 함수의 크기나 복잡성을 고려하여 inline 요청을 무시할 수도 있다. 함수가 너무 커서 인라인 처리 시 코드 크기 증가가 성능 저하로 이어..

C언어 2024.10.21
728x90