libstdc++/8230: Buggy allocator behaviour
Matt Austern
austern@apple.com
Thu Nov 14 15:25:00 GMT 2002
On Thursday, November 14, 2002, at 12:39 PM, Gabriel Dos Reis wrote:
> Benjamin Kosnik <bkoz@redhat.com> writes:
>
> | See attached patch for a way to fix this with the pool allocators.
>
> I agree with your patch.
>
> The following comment is for possible improvements. What about using
>
> if (__builtin_expect(__ret == 0, 0))
> __throw_bad_alloc("allocate::allocate");
>
> ?
> That gives a hint to the compiler that the branch is expected to be
> taken very unfrequently, and it should make scheduling accordingly.
>
> In general, I would like to see us starting using use
> __builtin_expect()
> at places where we do checks for limits cases. Thoughts?
Two questions.
First, is it known how much of a speedup this gives on typical
platforms?
Second, if the answer to question 1 is "a lot": is there some sensible
way to use this in the compiler itself? I suppose it'd have to involve
some ghastly macro hackery because of the bootstrap problem, but
it we're talking big performance wins, it might be worth it.
--Matt
More information about the Libstdc++
mailing list