AVR Libc Home Page AVRs AVR Libc Development Pages
Main Page User Manual Library Reference FAQ Alphabetical Index Example Projects

ベンチマーク

次の結果は、特定のライブラリ関数を使用するために必要となるリソースの簡単な見積もりを求めることが出来ます。これは、次の要求の効果を増やすことや減らすことの両方とも出来るいくつかの要因があります。

いくつかのlibc関数

avr-gcc バージョンは、4.2.3です。

関数のサイズは、すべての取り上げられた関数で提供されます。標準のavr-libcは -mcall-prologues オプションを付けてコンパイルされます。括弧内は、プロローグとエピローグのモジュールを考慮しないサイズの結果です。関数がプロローグとエピローグの原因でないなら、両方のサイズは同時になりえます。

関数 単位 Avr2 Avr25 Avr4
atoi ("12345") Flash bytes
Stack bytes
MCU clocks
82 (82)
2
155
78 (78)

74 (74)
2
149
atol ("12345") Flash bytes
Stack bytes
MCU clocks
122 (122)
2
221
118 (118)

118 (118)
2
219
dtostre (1.2345, s, 6, 0) Flash bytes
Stack bytes
MCU clocks
1184 (1072)
17
1313
1088 (978)

1088 (978)
17
1152
dtostrf (1.2345, 15, 6, s) Flash bytes
Stack bytes
MCU clocks
1676 (1564)
36
1608
1548 (1438)

1548 (1438)
36
1443
itoa (12345, s, 10) Flash bytes
Stack bytes
MCU clocks
150 (150)
4
1172
134 (134)

134 (134)
4
1152
ltoa (12345L, s, 10) Flash bytes
Stack bytes
MCU clocks
220 (220)
9
3174
200 (200)

200 (200)
9
3136
malloc (1) Flash bytes
Stack bytes
MCU clocks
554 (554)
4
196
506 (506)

506 (506)
4
178
realloc ((void *)0, 1) Flash bytes
Stack bytes
MCU clocks
1152 (1040)
20
303
1042 (932)

1042 (932)
20
280
qsort (s, sizeof(s), 1, cmp) Flash bytes
Stack bytes
MCU clocks
1242 (1130)
38
20914
990 (880)

1008 (898)
38
16678
sprintf_min (s, "%d", 12345) Flash bytes
Stack bytes
MCU clocks
1216 (1104)
59
1846
1090 (980)

1086 (976)
59
1711
sprintf (s, "%d", 12345) Flash bytes
Stack bytes
MCU clocks
1674 (1562)
58
1610
1542 (1432)

1498 (1388)
58
1528
sprintf_flt (s, "%e", 1.2345) Flash bytes
Stack bytes
MCU clocks
3334 (3222)
66
2513
3084 (2974)

3040 (2930)
66
2297
sscanf_min ("12345", "%d", &i) Flash bytes
Stack bytes
MCU clocks
1540 (1428)
55
1339
1354 (1244)

1354 (1244)
55
1240
sscanf ("12345", "%d", &i) Flash bytes
Stack bytes
MCU clocks
1950 (1838)
53
1334
1704 (1594)

1704 (1594)
53
1235
sscanf ("point,color", "%[a-z]", s) Flash bytes
Stack bytes
MCU clocks
1950 (1838)
87
2878
1704 (1594)

1704 (1594)
87
2718
sscanf_flt ("1.2345", "%e", &x) Flash bytes
Stack bytes
MCU clocks
3298 (3186)
63
2187
2934 (2824)

2918 (2808)
63
1833
strtod ("1.2345", &p) Flash bytes
Stack bytes
MCU clocks
1570 (1458)
22
1237
1472 (1362)

1456 (1346)
22
971
strtol ("12345", &p, 0) Flash bytes
Stack bytes
MCU clocks
942 (830)
29
1074
874 (764)

808 (698)
21
722

数学関数

表は、与えられた引数で計算するためのMCUクロック数を含みます。Avr2とAvr4の大きい主要な違いは、ハードウェア掛け算操作です。

関数 Avr2 Avr4
__addsf3 (1.234, 5.678) 113 108
__mulsf3 (1.234, 5.678) 375 138
__divsf3 (1.234, 5.678) 466 465
acos (0.54321) 4411 2455
asin (0.54321) 4517 2556
atan (0.54321) 4710 2271
atan2 (1.234, 5.678) 5270 2857
cbrt (1.2345) 2684 2555
ceil (1.2345) 177 177
cos (1.2345) 3387 1671
cosh (1.2345) 4922 2979
exp (1.2345) 4708 2765
fdim (5.678, 1.234) 111 111
floor (1.2345) 180 180
fmax (1.234, 5.678) 39 37
fmin (1.234, 5.678) 35 35
fmod (5.678, 1.234) 131 131
frexp (1.2345, 0) 42 41
hypot (1.234, 5.678) 1341 866
ldexp (1.2345, 6) 42 42
log (1.2345) 4142 2134
log10 (1.2345) 4498 2260
modf (1.2345, 0) 433 429
pow (1.234, 5.678) 9293 5047
round (1.2345) 150 150
sin (1.2345) 3353 1653
sinh (1.2345) 4946 3003
sqrt (1.2345) 494 492
tan (1.2345) 4381 2426
tanh (1.2345) 5126 3173
trunc (1.2345) 178 178

Automatically generated by Doxygen 1.7.2 on Wed Feb 16 2011.

翻訳更新:2011年10月8日 by cega