Fogeaters, Light The World.

16

2016-Feb

[AVR] 16MHz 클럭의 연산자별 연산속도 측정

작성자: title: MoonBlonix IP ADRESS: *.148.87.98 조회 수: 1686

정확한 수치는 다소 차이가 날 수 있으나 연산자별 속도 비교정도는 할 수 있겠다.

이게 사실 큰 의미없는 속도이긴 한데, 임베디드 개발시에는 은근히 이런 자잘한게 신경쓰인다.

부들부들..


======================================================

출처 :: http://cielab.ze.am/220344242831


아두이노,얼마나 빠를까요? volatile 명령어와 반복문을 사용해 알아보았습니다.

참고-5% 내외의 오차가 있을 수 있음,1,000,000us=1000ms=1sec,16Mhz에서 1clock=0.0625us


 

 unsigned long 자료형

 unsigned int 자료형

 unsigned char 자료형

 a++,a--

1.25us(20clock)

 0.63us(10clock)

 0.317us(5clock)

 a<b,a==b,a>b,...

0.56us(9clock)

 0.25us(4clock)

 0.125us(2clock)

 a=b

1.00us(16clock)

 0.50us(8clock)

 0.250us(4clock)

 c=a+b,c=a-b

1.75us(28clock)

 0.87us(14clock)

 0.438us(7clock)

 c=a*b

6.13us(98clock)

 1.38us(22clock)

 0.625us(10clock)

 c=a/b,c=a%b

39.13us(626clock)

 13.13us(210clock)

 5.375us(86clock)

 a=~b

1.25us(20clock)

 0.63us(10clock)

 0.375us(5clock)

 a=b|c,a=b&c,a=b^c

1.75us(28clock)

 0.87us(14clock)

 0.438us(7clock)

 

 

long 자료형

int 자료형 

char 자료형 

 c=a*b

 6.06us(97clock)

 1.38us(22clock)

 0.625us(10clock)

 c=a/b

 38.88us(622clock)

 14.31us(229clock)

 14.313us(229clock)

 

 

 

 float,double 자료형

 a<b,a>b,a=b,...

 1.00us(16clock)

 a=b

 1.00us(16clock)

 c=a+b,c=a-b

 8.63us(138clock)

 c=a*b

 9.88us(158clock)

 c=a/b

 31.00us(496clock)

 

 


 실수형에서 정수형으로

 5.94us(95clock)

 정수형에서 실수형으로

 4.38us(70clock)

 

 


 while(1)

0.38us(6clock) 

 if(1)0.00us(0clock)

 digitalWrite(a,b)

5.00us(80clock)

 a=digitalRead(b,c)

4.19us(67clock)

 analogWrite(pwmpin,b)

7.81us(125clock)

 a=analogRead(b,c)

114.21us(1757clock)

 delay(0)

5.56us(89clock) 

 Serial.print("")

보드레이트 9600에서

5.25us(84clock)

 a=millis()

1.69us(27clock)

 servo.write(b)

62.50us(1000clock)

 a=sin(b)

114.14us(1756clock)

 a=cos(b)

118.30us(1820clock)

 a=tan(b)

119.08us(1832clock)

 a=log(b)

158.60us(2440clock) 

 a=pow(b,c)355.42us(5468clock) 
 a=asin(b)128.12us(1971clock)
 a=atan2(b,c)176.67us(2718clock)

 

profile
List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 [Web] 클라우드 IDE + 2 title: MoonBlonix 2017-06-25 15118
52 OP Amp - 연산 증폭기 title: MoonBlonix 2016-03-07 1741
51 [아두이노] RC용 ESC(변속기) 작동방법 title: MoonBlonix 2016-03-06 1763
50 [AVR/아두이노] 수광 센서 file title: MoonBlonix 2016-03-06 1759
49 [리눅스] 정적, 공유, 동적 라이브러리 사용 title: MoonBlonix 2016-03-05 1325
48 [C/C++] Makefile 만들기 title: MoonBlonix 2016-03-05 1777
47 [C/C++] OS 구분 전처리기 매크로 title: MoonBlonix 2016-03-05 1562
46 [C++ STL] std::unique_ptr + 1 title: MoonBlonix 2016-03-05 1754
45 [AVR] 퓨즈비트 옵션 file + 1 title: MoonBlonix 2016-03-04 1454
44 [AVR] 외부클럭, 리셋회로 설계 file + 1 title: MoonBlonix 2016-03-04 1739
43 [AVR] 소프트웨어 UART 통신(Software Serial) file + 1 title: MoonBlonix 2016-03-04 1739
42 [AVR/아두이노] PIR 인체감지 센서 file title: MoonBlonix 2016-03-03 1912
41 [리눅스] 파일관리 라이브러리 함수 title: MoonBlonix 2016-03-03 1650
40 [리눅스] 리눅스 커널 API 모음 title: MoonBlonix 2016-03-03 1950
39 [리눅스/윈도우/C/C++] 플러그인 시스템 구현 title: MoonBlonix 2016-03-03 1991
38 [라즈베리파이] UART 통신 file title: MoonBlonix 2016-02-25 1621
37 [리눅스] vi 편집기 명령어 title: MoonBlonix 2016-02-25 1520
36 [AVR] 서보모터 제어 file title: MoonBlonix 2016-02-21 1669
» [AVR] 16MHz 클럭의 연산자별 연산속도 측정 title: MoonBlonix 2016-02-16 1686
34 [AVR] 입력받기 (풀업저항, 외부인터럽트) file + 1 title: MoonBlonix 2016-02-13 1995
33 [AVR] ADC (아두이노 analogread 사용) file + 2 title: MoonBlonix 2016-02-13 1703