public StringBuilderPoolBenchmark() { var policy = new StringBuilderPooledObjectPolicy(); _emptyPool = new DefaultObjectPool <StringBuilder>(policy, PoolSize); _halfFullPool = new DefaultObjectPool <StringBuilder>(policy, PoolSize); _fullPool = new DefaultObjectPool <StringBuilder>(policy, PoolSize); // Empty Pool needs no initialization, it's already empty // Half Full Pool should have items in half of its slots StringBuilder item = null; for (var i = 0; i < PoolSize; i++) { item = _halfFullPool.Get(); } for (var i = 0; i < PoolSize / 2; i++) { _halfFullPool.Return(item); } // Full Pool should have items in all of it's slots for (var i = 0; i < PoolSize; i++) { item = _fullPool.Get(); } for (var i = 0; i < PoolSize; i++) { _fullPool.Return(item); } }
public static ObjectPool <StringBuilder> CreateStringBuilderPool( this ObjectPoolProvider provider, int initialCapacity, int maximumRetainedCapacity) { var policy = new StringBuilderPooledObjectPolicy { InitialCapacity = initialCapacity, MaximumRetainedCapacity = maximumRetainedCapacity }; return(provider.Create(policy)); }