Exemple #1
0
        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));
        }