Why does StringBuilder have a default capacity of 16 characters? Is this some kind of optimization?
StringBuilder builder = new StringBuilder();
Console.WriteLine("builder capacity: '{0}'", builder.Capacity);
output:
builder capacity: '16'
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Straight from the MSDN docs.
They can’t really optimise anything as it depends entirely on usage, hence they let you specify a capacity in the constructor, so you can optimise it yourself. They put something in if you don’t specify anything purely on the fairly-safe guess that you want some capacity even if you don’t specify any.
The same goes for lists. They don’t know how many items you want or how many items on average a list contains in your app. They expose capacity so you can force the list size to something that would prevent it from having to grow too often. The
StringBuilderis no different in this case.