Sophie

Sophie

distrib > Fedora > 13 > i386 > media > os > by-pkgid > 73443d16ffe49ffcb4131bf0d8d1b044 > files > 12

avr-libc-docs-1.6.7-2.fc13.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
    <title>avr-libc: Benchmarks</title>
    <link href="dox.css" rel="stylesheet" type="text/css">
  </head>
<body>
<center>
<table width="80%">
  <tr>
    <td align="left"><a href="http://www.nongnu.org/avr-libc/">AVR Libc Home Page</a></td>
    <td align="center" colspan=4><img src="avrs.png" alt="AVRs" align="middle" border="0"></td>
    <td align="right"><a href="https://savannah.nongnu.org/projects/avr-libc/">AVR Libc Development Pages</a></td>
  </tr>
  <tr>
    <td align="center" width="13%"><a href="index.html">Main Page</a></td>
    <td align="center" width="13%"><a href="pages.html">User Manual</a></td>
    <td align="center" width="13%"><a href="modules.html">Library Reference</a></td>
    <td align="center" width="13%"><a href="FAQ.html">FAQ</a></td>
    <td align="center" width="13%"><a href="globals.html">Alphabetical Index</a></td>
    <td align="center" width="13%"><a href="group__demos.html">Example Projects</a></td>
  </tr>
</table>
</center>
<hr width="80%">
<!-- Generated by Doxygen 1.6.1 -->
<div class="contents">


<h1><a class="anchor" id="benchmarks">Benchmarks </a></h1><p>The results below can only give a rough estimate of the resources necessary for using certain library functions. There is a number of factors which can both increase or reduce the effort required:</p>
<ul>
<li>Expenses for preparation of operands and their stack are not considered.</li>
</ul>
<ul>
<li>In the table, the size includes all additional functions (for example, function to multiply two integers) but they are only linked from the library.</li>
</ul>
<ul>
<li>Expenses of time of performance of some functions essentially depend on parameters of a call, for example, <a class="el" href="group__avr__stdlib.html#gafd4bf2faec43342e7ad3d2ab37bac1fe">qsort()</a> is recursive, and <a class="el" href="group__avr__stdio.html#ga6017094d9fd800fa02600d35399f2a2a">sprintf()</a> receives parameters in a stack.</li>
</ul>
<ul>
<li>Different versions of the compiler can give a significant difference in code size and execution time. For example, the <a class="el" href="group__avr__stdlib.html#ga6c140bdd3b9bd740a1490137317caa44">dtostre()</a> function, compiled with avr-gcc 3.4.6, requires 930 bytes. After transition to avr-gcc 4.2.3, the size become 1088 bytes.</li>
</ul>
<h2><a class="anchor" id="bench_libc">
A few of libc functions.</a></h2>
<p>Avr-gcc version is 4.2.3</p>
<p>The size of function is given in view of all picked up functions. By default Avr-libc is compiled with <code>-mcall-prologues</code> option. In brackets the size without taking into account modules of a prologue and an epilogue is resulted. Both of the size can coincide, if function does not cause a prologue/epilogue.</p>
<p><small> </p>
<table border="1" cellspacing="3" cellpadding="3">
<tr>
<td width="50%"><p><b>Function</b> </p>
</td><td width="20%"><p><b>Units</b> </p>
</td><td width="10%"><p><b>Avr2</b> </p>
</td><td width="10%"><p><b>Avr25</b> </p>
</td><td width="10%"><p><b>Avr4</b>  </p>
</td></tr>
<tr>
<td><p>atoi ("12345") </p>
</td><td><p>Flash bytes<br/>
Stack bytes<br/>
MCU clocks </p>
</td><td><p>82 (82)<br/>
2<br/>
155 </p>
</td><td><p>78 (78)<br/>
<br/>
 </p>
</td><td><p>74 (74)<br/>
2<br/>
149  </p>
</td></tr>
<tr>
<td><p>atol ("12345") </p>
</td><td><p>Flash bytes<br/>
Stack bytes<br/>
MCU clocks </p>
</td><td><p>122 (122)<br/>
2<br/>
221 </p>
</td><td><p>118 (118)<br/>
<br/>
 </p>
</td><td><p>118 (118)<br/>
2<br/>
219  </p>
</td></tr>
<tr>
<td><p>dtostre (1.2345, s, 6, 0) </p>
</td><td><p>Flash bytes<br/>
Stack bytes<br/>
MCU clocks </p>
</td><td><p>1184 (1072)<br/>
17<br/>
1313 </p>
</td><td><p>1088 (978)<br/>
<br/>
 </p>
</td><td><p>1088 (978)<br/>
17<br/>
1152  </p>
</td></tr>
<tr>
<td><p>dtostrf (1.2345, 15, 6, s) </p>
</td><td><p>Flash bytes<br/>
Stack bytes<br/>
MCU clocks </p>
</td><td><p>1676 (1564)<br/>
36<br/>
1608 </p>
</td><td><p>1548 (1438)<br/>
<br/>
 </p>
</td><td><p>1548 (1438)<br/>
36<br/>
1443  </p>
</td></tr>
<tr>
<td><p>itoa (12345, s, 10) </p>
</td><td><p>Flash bytes<br/>
Stack bytes<br/>
MCU clocks </p>
</td><td><p>150 (150)<br/>
4<br/>
1172 </p>
</td><td><p>134 (134)<br/>
<br/>
 </p>
</td><td><p>134 (134)<br/>
4<br/>
1152  </p>
</td></tr>
<tr>
<td><p>ltoa (12345L, s, 10) </p>
</td><td><p>Flash bytes<br/>
Stack bytes<br/>
MCU clocks </p>
</td><td><p>220 (220)<br/>
9<br/>
3174 </p>
</td><td><p>200 (200)<br/>
<br/>
 </p>
</td><td><p>200 (200)<br/>
9<br/>
3136  </p>
</td></tr>
<tr>
<td><p>malloc (1) </p>
</td><td><p>Flash bytes<br/>
Stack bytes<br/>
MCU clocks </p>
</td><td><p>554 (554)<br/>
4<br/>
196 </p>
</td><td><p>506 (506)<br/>
<br/>
 </p>
</td><td><p>506 (506)<br/>
4<br/>
178  </p>
</td></tr>
<tr>
<td><p>realloc ((void *)0, 1) </p>
</td><td><p>Flash bytes<br/>
Stack bytes<br/>
MCU clocks </p>
</td><td><p>1152 (1040)<br/>
20<br/>
303 </p>
</td><td><p>1042 (932)<br/>
<br/>
 </p>
</td><td><p>1042 (932)<br/>
20<br/>
280  </p>
</td></tr>
<tr>
<td><p>qsort (s, sizeof(s), 1, cmp) </p>
</td><td><p>Flash bytes<br/>
Stack bytes<br/>
MCU clocks </p>
</td><td><p>1242 (1130)<br/>
38<br/>
20914 </p>
</td><td><p>990 (880)<br/>
<br/>
 </p>
</td><td><p>1008 (898)<br/>
38<br/>
16678  </p>
</td></tr>
<tr>
<td><p>sprintf_min (s, "%d", 12345) </p>
</td><td><p>Flash bytes<br/>
Stack bytes<br/>
MCU clocks </p>
</td><td><p>1216 (1104)<br/>
59<br/>
1846 </p>
</td><td><p>1090 (980)<br/>
<br/>
 </p>
</td><td><p>1086 (976)<br/>
59<br/>
1711  </p>
</td></tr>
<tr>
<td><p>sprintf (s, "%d", 12345) </p>
</td><td><p>Flash bytes<br/>
Stack bytes<br/>
MCU clocks </p>
</td><td><p>1674 (1562)<br/>
58<br/>
1610 </p>
</td><td><p>1542 (1432)<br/>
<br/>
 </p>
</td><td><p>1498 (1388)<br/>
58<br/>
1528  </p>
</td></tr>
<tr>
<td><p>sprintf_flt (s, "%e", 1.2345) </p>
</td><td><p>Flash bytes<br/>
Stack bytes<br/>
MCU clocks </p>
</td><td><p>3334 (3222)<br/>
66<br/>
2513 </p>
</td><td><p>3084 (2974)<br/>
<br/>
 </p>
</td><td><p>3040 (2930)<br/>
66<br/>
2297  </p>
</td></tr>
<tr>
<td><p>sscanf_min ("12345", "%d", &amp;i) </p>
</td><td><p>Flash bytes<br/>
Stack bytes<br/>
MCU clocks </p>
</td><td><p>1540 (1428)<br/>
55<br/>
1339 </p>
</td><td><p>1354 (1244)<br/>
<br/>
 </p>
</td><td><p>1354 (1244)<br/>
55<br/>
1240  </p>
</td></tr>
<tr>
<td><p>sscanf ("12345", "%d", &amp;i) </p>
</td><td><p>Flash bytes<br/>
Stack bytes<br/>
MCU clocks </p>
</td><td><p>1950 (1838)<br/>
53<br/>
1334 </p>
</td><td><p>1704 (1594)<br/>
<br/>
 </p>
</td><td><p>1704 (1594)<br/>
53<br/>
1235  </p>
</td></tr>
<tr>
<td><p>sscanf ("point,color", "%[a-z]", s) </p>
</td><td><p>Flash bytes<br/>
Stack bytes<br/>
MCU clocks </p>
</td><td><p>1950 (1838)<br/>
87<br/>
2878 </p>
</td><td><p>1704 (1594)<br/>
<br/>
 </p>
</td><td><p>1704 (1594)<br/>
87<br/>
2718  </p>
</td></tr>
<tr>
<td><p>sscanf_flt ("1.2345", "%e", &amp;x) </p>
</td><td><p>Flash bytes<br/>
Stack bytes<br/>
MCU clocks </p>
</td><td><p>3298 (3186)<br/>
63<br/>
2187 </p>
</td><td><p>2934 (2824)<br/>
<br/>
 </p>
</td><td><p>2918 (2808)<br/>
63<br/>
1833  </p>
</td></tr>
<tr>
<td><p>strtod ("1.2345", &amp;p) </p>
</td><td><p>Flash bytes<br/>
Stack bytes<br/>
MCU clocks </p>
</td><td><p>1570 (1458)<br/>
22<br/>
1237 </p>
</td><td><p>1472 (1362)<br/>
<br/>
 </p>
</td><td><p>1456 (1346)<br/>
22<br/>
971  </p>
</td></tr>
<tr>
<td><p>strtol ("12345", &amp;p, 0) </p>
</td><td><p>Flash bytes<br/>
Stack bytes<br/>
MCU clocks </p>
</td><td><p>942 (830)<br/>
29<br/>
1074 </p>
</td><td><p>874 (764)<br/>
<br/>
 </p>
</td><td><p>808 (698)<br/>
21<br/>
722  </p>
</td></tr>
</table>
<p></small></p>
<h2><a class="anchor" id="bench_libm">
Math functions.</a></h2>
<p>The table contains the number of MCU clocks to calculate a function with a given argument(s). The main reason of a big difference between Avr2 and Avr4 is a hardware multiplication.</p>
<table border="1" cellspacing="3" cellpadding="3">
<tr>
<td width="50%"><p><b>Function</b> </p>
</td><td width="25%"><p><b>Avr2</b> </p>
</td><td width="25%"><p><b>Avr4</b>  </p>
</td></tr>
<tr>
<td><p>__addsf3 (1.234, 5.678) </p>
</td><td><p>113 </p>
</td><td><p>108  </p>
</td></tr>
<tr>
<td><p>__mulsf3 (1.234, 5.678) </p>
</td><td><p>375 </p>
</td><td><p>138  </p>
</td></tr>
<tr>
<td><p>__divsf3 (1.234, 5.678) </p>
</td><td><p>466 </p>
</td><td><p>465  </p>
</td></tr>
<tr>
<td><p>acos (0.54321) </p>
</td><td><p>4411 </p>
</td><td><p>2455  </p>
</td></tr>
<tr>
<td><p>asin (0.54321) </p>
</td><td><p>4517 </p>
</td><td><p>2556  </p>
</td></tr>
<tr>
<td><p>atan (0.54321) </p>
</td><td><p>4710 </p>
</td><td><p>2271  </p>
</td></tr>
<tr>
<td><p>atan2 (1.234, 5.678) </p>
</td><td><p>5270 </p>
</td><td><p>2857  </p>
</td></tr>
<tr>
<td><p>cbrt (1.2345) </p>
</td><td><p>2684 </p>
</td><td><p>2555  </p>
</td></tr>
<tr>
<td><p>ceil (1.2345) </p>
</td><td><p>177 </p>
</td><td><p>177  </p>
</td></tr>
<tr>
<td><p>cos (1.2345) </p>
</td><td><p>3387 </p>
</td><td><p>1671  </p>
</td></tr>
<tr>
<td><p>cosh (1.2345) </p>
</td><td><p>4922 </p>
</td><td><p>2979  </p>
</td></tr>
<tr>
<td><p>exp (1.2345) </p>
</td><td><p>4708 </p>
</td><td><p>2765  </p>
</td></tr>
<tr>
<td><p>fdim (5.678, 1.234) </p>
</td><td><p>111 </p>
</td><td><p>111  </p>
</td></tr>
<tr>
<td><p>floor (1.2345) </p>
</td><td><p>180 </p>
</td><td><p>180  </p>
</td></tr>
<tr>
<td><p>fmax (1.234, 5.678) </p>
</td><td><p>39 </p>
</td><td><p>37  </p>
</td></tr>
<tr>
<td><p>fmin (1.234, 5.678) </p>
</td><td><p>35 </p>
</td><td><p>35  </p>
</td></tr>
<tr>
<td><p>fmod (5.678, 1.234) </p>
</td><td><p>131 </p>
</td><td><p>131  </p>
</td></tr>
<tr>
<td><p>frexp (1.2345, 0) </p>
</td><td><p>42 </p>
</td><td><p>41  </p>
</td></tr>
<tr>
<td><p>hypot (1.234, 5.678) </p>
</td><td><p>1341 </p>
</td><td><p>866  </p>
</td></tr>
<tr>
<td><p>ldexp (1.2345, 6) </p>
</td><td><p>42 </p>
</td><td><p>42  </p>
</td></tr>
<tr>
<td><p>log (1.2345) </p>
</td><td><p>4142 </p>
</td><td><p>2134  </p>
</td></tr>
<tr>
<td><p>log10 (1.2345) </p>
</td><td><p>4498 </p>
</td><td><p>2260  </p>
</td></tr>
<tr>
<td><p>modf (1.2345, 0) </p>
</td><td><p>433 </p>
</td><td><p>429  </p>
</td></tr>
<tr>
<td><p>pow (1.234, 5.678) </p>
</td><td><p>9293 </p>
</td><td><p>5047  </p>
</td></tr>
<tr>
<td><p>round (1.2345) </p>
</td><td><p>150 </p>
</td><td><p>150  </p>
</td></tr>
<tr>
<td><p>sin (1.2345) </p>
</td><td><p>3353 </p>
</td><td><p>1653  </p>
</td></tr>
<tr>
<td><p>sinh (1.2345) </p>
</td><td><p>4946 </p>
</td><td><p>3003  </p>
</td></tr>
<tr>
<td><p>sqrt (1.2345) </p>
</td><td><p>494 </p>
</td><td><p>492  </p>
</td></tr>
<tr>
<td><p>tan (1.2345) </p>
</td><td><p>4381 </p>
</td><td><p>2426  </p>
</td></tr>
<tr>
<td><p>tanh (1.2345) </p>
</td><td><p>5126 </p>
</td><td><p>3173  </p>
</td></tr>
<tr>
<td><p>trunc (1.2345) </p>
</td><td><p>178 </p>
</td><td><p>178  </p>
</td></tr>
</table>
</div>

<hr width="80%">
<p><center>Automatically generated by Doxygen 1.6.1 on 30 Nov 2009.</center></p>

</body>
</html>