A* Pathfinding Project  4.1.5
The A* Pathfinding Project for Unity 3D
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Properties Events Macros Groups Pages
ListExtensions Class Reference

Extension methods for List<T> More...

Detailed Description

Extension methods for List<T>

Static Public Member Functions

static void ClearFast< T > (this List< T > list)
 Clear a list faster than List<T>.Clear.
 
static T[] ToArrayFromPool< T > (this List< T > list)
 Identical to ToArray but it uses ArrayPool<T> to avoid allocations if possible.
 

Member Function Documentation

static void ClearFast< T > ( this List< T >  list)
static

Clear a list faster than List<T>.Clear.

It turns out that the List<T>.Clear method will clear all elements in the underlaying array not just the ones up to Count. If the list only has a few elements, but the capacity is huge, this can cause performance problems. Using the RemoveRange method to remove all elements in the list does not have this problem, however it is implemented in a stupid way, so it will clear the elements twice (completely unnecessarily) so it will only be faster than using the Clear method if the number of elements in the list is less than half of the capacity of the list.

Hopefully this method can be removed when Unity upgrades to a newer version of Mono.

static T [] ToArrayFromPool< T > ( this List< T >  list)
static

Identical to ToArray but it uses ArrayPool<T> to avoid allocations if possible.

Use with caution as pooling too many arrays with different lengths that are rarely being reused will lead to an effective memory leak.


The documentation for this class was generated from the following file: