본문 바로가기

코드최적화5

c언어 코드 최적화 5장. 함수 호출 최적화 C언어 최적화에 대해서 벌써 마지막 장이다. (사실은 더 많은 방법이 있지만, 가장 큰 차이가 존재하는 것들을 위주로 다뤄보았다.) 지금까지 C언어 코드 최적화 포스팅을 정독했다면 컴퓨터에대한 원리를 이해했을 것이다. 이번에 다뤄볼 최적화 방법은 함수 호출과 관련이 있다. 함수 호출은 사용자 정의 함수를 main() 이나 다른 함수에서 호출하여 사용하는 것을 말한다. 예를 들면, 아래와 같은 경우가 함수 호출의 예가 되겠다. #include #include #include int sum(int a, int b) { return a + b; } void main() { int a = 5; int b = 7; printf("%d + %d = %d \n ", a, b, sum(a, b)); return; } .. 2020. 10. 15.
c언어 코드 최적화 4장. 조건문 최적화 C언어 최적화에는 여러가지 고려해야 할 것들이 많다. 이번에는 조건문에서의 최적화를 다뤄보도록 하자. 1. 조건문은 비교연산 횟수를 줄여야 한다. 우리가 흔히 사용하는 조건문은 if 조건문이다. 별 생각없이 코딩을 하게되면 아래와 같은 코드가 나오게 된다. if (i == 1) { } else if (i == 2) { } else if (i == 3) { } else if (i == 4) { } else if (i == 5) { } else if (i == 6) { } else if (i == 7) { } else if (i == 8) { } 연산속도가 중요하지 않다면 이렇게 사용해도 큰 문제가 없다. 하지만 연산속도를 중요시 한다면 이런 코딩보다는 다른 방식을 사용해야 한다. 문제를 잘 살펴보면 만약에.. 2020. 10. 14.
c언어 코드 최적화 3장. LOOP 최적화 코드를 짜다보면 반복문은 무조건 사용하게 되어있다. 그런데 이 반복문 연산속도가 빠른놈이 아니다. 1. 반복문은 연산속도가 느리다. 반복을 하게되면 연산속도가 늦다는 것인데, 예를 들면 1부터 n까지의 정수들으 더하는 코드를 작성하면 아래와 같을 것이다. for(int i = 1; i 2020. 10. 14.
C언어 코드 최적화 2장. 비트연산을 사용하자. C언어 코드 최적화 방법은 여러가지가 있다. 이전에 나눗셈을 사용하지 않는것을 다뤄봤었다. 이번에는 비트연산을 사용하는 것이 얼마나 빠르게 코드를 작동시키는지 다뤄보도록 하자. 비트(bit)라는 것은 데이터에서 가장 기본이 되는 값으로, 0과 1로 이루어져 있다. 1 byte 는 8 bit 이다. 우리가 사용하는 int 자료형은 4byte 로 32bit 크기라고 할 수 있겠다. 아무튼 이런 비트연산을 하면 왜 코드 작동 속도가 빨라지는지 이론상 원리로 알아보자. 1. 비트 연산( OR, AND, XOR 등)은 컴퓨터에서 가장 빠르게 실행되는 연산이다. 그러므로 이러한 연산을 사용하면 좋을 수 밖에 없다. 코드에서 예를 들어보면, struct HUMAN { int is_Alive; int is_Walkin.. 2020. 10. 14.
c언어 코드 최적화 1장. 나눗셈을 사용하지 말자. C언어는 오랜 역사를 갖고 있으며, 더 발전한 C++ 언어 역시 많은 곳에서 사용되고 있다. 특히 컴퓨터보다는 제한된 성능의 기계에서 사용하고는 한다. 보통 우리는 임베디드 시스템이라고 부른다. 임베디드 시스템에 적용하는 코드는 최적화가 절대적으로 필요하다. 왜냐하면, 컴퓨터처럼 성능이 좋은 것은 아니지마는 성능을 포기하지 않기 때문이다. 그러기에 코드 최적화를 통해서 코드 실행 시간을 단축할 필요가 있다. 코드 최적화라는 것은 쉽게 생각하면 메모리를 알맞게 사용하는 것이라고 보면 된다. 코드 최적화 방법에는 여러 가지가 있다. 그중에서 가장 기초가 되는 것이 나눗셈을 사용하지 않는 것이다. 인텔 Skylake cpu 를 기준으로 봤을 때, 나눗셈은 10 cycle의 연산이 필요하다면, 덧셈은 1 cyc.. 2020. 10. 9.