1 Benchmarks

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:

  • Expenses for preparation of operands and their stack are not considered.

  • In the table, the size includes all additional functions (for example, function to multiply two integers) but they are only linked from the library.

  • Expenses of time of performance of some functions essentially depend on parameters of a call, for example, qsort() is recursive, and sprintf() receives parameters in a stack.

  • Different versions of the compiler can give a significant difference in code size and execution time. For example, the dtostre() function, compiled with avr-gcc 3.4.6, requires 930 bytes. After transition to avr-gcc 4.2.3, the size become 1088 bytes.

A few of libc functions.

Avr-gcc version is 4.7.1

The size of function is given in view of all picked up functions. By default Avr-libc is compiled with -mcall-prologues 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.

Math functions.

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.

Function

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