lines 648-717 of file: include/cppad/utility/omp_alloc.hpp

{xrst_begin omp_efficient app}

Check If A Memory Allocation is Efficient for Another Use
#########################################################

Removed
*******
This function has been removed because speed tests seem to indicate
it is just as fast, or faster, to free and then reallocate the memory.

Syntax
******

   # ``include <cppad/utility/omp_alloc.hpp>``

*flag* = ``omp_alloc::efficient`` ( *v_ptr* , *num_bytes* )

Purpose
*******
Check if memory that is currently in use is an efficient
allocation for a specified number of bytes.

v_ptr
*****
This argument has prototype

   ``const void`` * *v_ptr*

.
It must be a pointer to memory that is currently in use; i.e.
obtained by a previous call to :ref:`omp_get_memory-name` and not yet returned.

num_bytes
*********
This argument has prototype

   ``size_t`` *num_bytes*

It specifies the number of bytes of the memory allocated by *v_ptr*
that we want to use.

flag
****
The return value has prototype

   ``bool`` *flag*

It is true,
a call to ``get_memory`` with
:ref:`omp_get_memory@min_bytes`
equal to *num_bytes* would result in a value for
:ref:`omp_get_memory@cap_bytes` that is the same as when ``v_ptr``
was returned by ``get_memory`` ; i.e.,
*v_ptr* is an efficient memory block for *num_bytes*
bytes of information.

Thread
******
Either the :ref:`current thread<omp_get_thread_num-name>` must be the same as during
the corresponding call to :ref:`omp_get_memory-name` ,
or the current execution mode must be sequential
(not :ref:`parallel<omp_in_parallel-name>` ).

NDEBUG
******
If ``NDEBUG`` is defined, *v_ptr* is not checked (this is faster).
Otherwise, a list of in use pointers is searched to make sure
that *v_ptr* is in the list.

{xrst_end omp_efficient}
