mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-27 07:31:28 +00:00
1a5af34e6f
Locale objects use atomic reference counting, which may be very expensive in parallel applications. The classic locale is used by default by all streams and can be very contended. But it's never destroyed, so the reference counting is also completely pointless on the classic locale. Currently ~70% of time in the parallel stringstream benchmarks is spent in locale ctor/dtor. And the execution radically slows down with more threads. Avoid reference counting on the classic locale. With this change parallel benchmarks start to scale with threads. This is a re-application of |
||
---|---|---|
.. | ||
algorithms | ||
libcxxabi | ||
algorithms.partition_point.bench.cpp | ||
allocation.bench.cpp | ||
CartesianBenchmarks.h | ||
CMakeLists.txt | ||
ContainerBenchmarks.h | ||
deque_iterator.bench.cpp | ||
deque.bench.cpp | ||
filesystem.bench.cpp | ||
format_to_n.bench.cpp | ||
format_to.bench.cpp | ||
format.bench.cpp | ||
formatted_size.bench.cpp | ||
formatter_float.bench.cpp | ||
formatter_int.bench.cpp | ||
function.bench.cpp | ||
GenerateInput.h | ||
join_view.bench.cpp | ||
lexicographical_compare_three_way.bench.cpp | ||
lit.cfg.py | ||
lit.site.cfg.py.in | ||
map.bench.cpp | ||
monotonic_buffer.bench.cpp | ||
ordered_set.bench.cpp | ||
random.bench.cpp | ||
std_format_spec_string_unicode.bench.cpp | ||
stop_token.bench.cpp | ||
string.bench.cpp | ||
stringstream.bench.cpp | ||
system_error.bench.cpp | ||
to_chars.bench.cpp | ||
unordered_set_operations.bench.cpp | ||
util_smartptr.bench.cpp | ||
Utilities.h | ||
variant_visit_1.bench.cpp | ||
variant_visit_2.bench.cpp | ||
variant_visit_3.bench.cpp | ||
VariantBenchmarks.h | ||
vector_operations.bench.cpp |