임베디드c프로그래밍반복문최적화2 임베디드 C 프로그래밍 속도 최적화 - 반복문 최적화 2 1. 루프 변수에 네이티브 데이터 타입을 사용하자. 네이티브 데이터 타입을 사용하면 데이터 버스와 메모리의 접근성이 좋아져 빠르게 동작할 수 있다. (네이티브 데이터 타입이란 프로세서의 한 워드의 크기 = 데이터 버스의 크기이다.) 반복문 제어에 사용되는 변수는 자주 사용되므로 네이티브 데이터 타입을 사용하면 성능을 높일 수 있다. 예를 들어 32bit 마이크로프로세서의 경우, 네이티브 데이터 타입은 int (32bit)이다. int 형 중에서도 부호를 사용하지 않는 unsigned int가 더 빠르기 때문에 반복문의 제어 변수로 unsigned int를 사용하는 것이 좋다. 2. 함수와 반복문의 위치 함수를 호출하면 자원이 사용된다. 분기 명령, 필요한 값들 스택에 저장 등등. 반복문에서 함수를 호출.. 2024. 7. 16. 임베디드 C 프로그래밍 속도 최적화 - 반복문 최적화 1 1. 루프 풀기 아래 2가지 형태의 for 문을 비교해보자. 아래 코드는 크기가 100인 배열에 값을 저장하는 코드이다. 첫번째 for 반복문은 일반적인 반복문이고 두번째 반복문은 루프 풀기를 적용한 것이다. 두 코드 모두 크기가 100인 배열에 값을 저장하지만, 첫번째 코드는 비교 연산 101회, 반복을 위한 계산은 100회를 계산한다. 두번째 코드의 경우 비교 연산은 26회, 반복을 위한 계산은 25회 수행된다. 따라서 루프를 돌리는데 발생하는 비용이 1/4로 줄어들게 된다. 하지만, 그렇다고 루프를 완전히 푸는 것이 최고의 최적화는 아니다. 그만큼 코드 블록이커져 메모리가 커지기 때문이다. 따라서 속도와 메모리 사이에서 적절한 선택이 필요하다. 2. 루프 병합 병합 가능한 인접 반복문은 하나로 .. 2024. 7. 15. 이전 1 다음