Re: std::string and std::ostringstream performances
* James Kanze:
On Oct 31, 10:55 pm, Erik Wikstr?m <Erik-wikst...@telia.com> wrote:
[...]
I do not know, and I do not think the standard says anything
about it. But a good implementation will probably use a
resizing scheme similar to the one used for vectors, such as
(at least) doubling the capacity every time it resizes.
Doubling is actually not a very good strategy; multiplying by
say 1.5 is considerably better. (As a general rule, the
multiplier should be less that (1+sqrt(5))/2---about 1.6. 1.5
is close enough, and easy to calculate.) In memory tight
situations, of course, the multiplier should be even smaller.
The original STL implementation did use 2, and I suspect that
many implementations still do, even though we now know that it
isn't such a good idea.
Could you elaborate, specifically on where the golden ratio enters the
picture?
It seems like a number drawn out of thin air, like e.g. a factor 1.7 for
a hash table.
Generally it's an optimization question, and the answer for optimization
is to measure if it matters.
Cheers,
- Alf
--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?