4.8 Getting the Best Efficiency Out of MPFR
Here are a few hints to get the best efficiency out of MPFR:
- you should avoid allocating and clearing variables. Reuse variables
whenever possible, allocate or clear outside of loops, pass
temporary variables to subroutines instead of allocating them inside
the subroutines;
- use
mpfr_swap
instead of mpfr_set
whenever possible.
This will avoid copying the significands;
- avoid using MPFR from C++, or make sure your C++ interface does not
perform unnecessary allocations or copies. Slowdowns of up to a
factor 15 have been observed on some applications with a C++ interface;
- MPFR functions work in-place: to compute
a = a + b
you don’t
need an auxiliary variable, you can directly write
mpfr_add (a, a, b, ...)
.