On Thu, Sep 20, 2012 at 8:07 AM, Liviu Nicoara <nikko...@hates.ms> wrote:
> But have you measured the amount of memory consumed by all STDCXX locale data 
> loaded in one process? How much absolute time is spent in resizing the locale 
> and facet buffers? What is the gain in space and time performance with such a 
> change versus without? Just how fragmented the heap becomes and is there a 
> performance impact because of it, etc.? IOW, before changing the status quo 
> one must show an objective defect, produce a body of evidence, including a 
> failing test case for the argument.

sizeof(std::locale) * number_of_locales.

I'll let you in on a little secret: once you call setlocale(3C) and
localeconv(3C), the Standard C Library doesn't release its own locale
handles until process termination. So you might think you save a lot
of memory by destroying and constructing the same locales. You're
really not. It's the Standard C Library locale data which takes up a
lot of space.

What I do know for a fact that this "optimization" did, was to cause
the races conditions reported by 4 different thread analyzers. Race
conditions are a show-stopper for me, and they are not negotiable.

> And I love minimalistic code, and hate waste at the same time, especially in 
> a general purpose library. To each its own.

Here's a helpful quote:

"We should forget about small efficiencies, say about 97% of the time:
premature optimization is the root of all evil". It's from Donald
Knuth.

And I love correct code which doesn't cause thread analyzers to report
more than 12000 race conditions for just one test case. I've said it
before and I will say it again: race conditions are a showstopper and
are not negotiable. Period.

The patch is in scope for the issue at hand. The issue is that
std::numpunct and std::moneypunct are not thread safe. This has been
confirmed by 4 different thread analyzers, even after applying your
_numpunct.h patch.

You are more than welcome to submit your own patch which eliminates
100% of the race conditions.

--Stefan

-- 
Stefan Teleman
KDE e.V.
stefan.tele...@gmail.com

Reply via email to