示例#1
0
        public void PoolSizeExceeded(int poolSize)
        {
            using (var test = new Perf.PoolBoy <Txt.RegularExpressions.Regex>()) {
                const string numbersRegexPattern = "[0-9]+";
                Perf.Text.RegularExpressions.Regex?priorRegex = null;
                var created = 0;

                do
                {
                    var regexNumbers = new Perf.Text.RegularExpressions.Regex(numbersRegexPattern, poolSize: poolSize);
                    regexNumbers.IsPoolAllocated.Should().BeTrue();

                    if (priorRegex != null)
                    {
                        regexNumbers.performanceObject.Should().NotBeSameAs(priorRegex.Value.performanceObject);
                    }

                    created++;
                    priorRegex = regexNumbers;
                } while (created < poolSize);

                var afterPoolSaturated = new Perf.Text.RegularExpressions.Regex(numbersRegexPattern, poolSize: poolSize);
                afterPoolSaturated.IsPoolAllocated.Should().BeFalse();
            }
        }
        public void SamePattern_SamePool(string poolKey)
        {
            using (var test = new Perf.PoolBoy <Txt.RegularExpressions.Regex>()) {
                const string numbersRegexPattern = "[0-9]+";
                var          regexNumbers        = new Perf.Text.RegularExpressions.Regex(numbersRegexPattern, poolKey);

                var regexNumbers2 = new Perf.Text.RegularExpressions.Regex(numbersRegexPattern, poolKey);

                regexNumbers.IsPoolAllocated.Should().BeTrue();
                regexNumbers2.IsPoolAllocated.Should().BeTrue();
                regexNumbers2._objectPool.Should().BeSameAs(regexNumbers._objectPool);
                regexNumbers2.performanceObject.Should().NotBeSameAs(regexNumbers.performanceObject);
            }
        }