Freezes an allocation record, to not allow new allocations to be added. This converts the memory of the what happenned to be stored as a Tuple. This could give better performance during replay; or it could give worse.

preallocate(f, xs...)

Return the first run result and a preallocated version of the corresponding method of callable object f given its argument. Note the behaviour of both the method generated record and the method will be freezed, you shouldn't feed this function with a dynamic allocation method.


Return all recorded allocations to original sizes, and reset to first step.


Anything inside a @no_prealloc will be ignored by AutoPreallocation.jl. This applies recursively to functions called by functions called etc within the @no_prealloc. If it allocates then that allocation will always occur – it won't be avoided by auto-preallocation.

This can be used if there is a part of a function that may allocation a unknowable number of intermediary variables to get to the final answer – and which thus is not suitable for use with AutoPreallocation.