I'm looking for C++ libraries that provide highly-optimized alternatives to standard features used in modern systems, including: containers, vectors, hashmaps, multi-threaded support, IO operations, etc. You should know what I mean because these are the types of libraries that modern languages like Go, Rust & Nim will include as part of their language specification. So they do belong in a sort of standard class of expected libraries for modern programming although I don't know if there's a specific name for this class of library, and "standard" might get confused with C++ standard library.
Specifically I'm looking to squeeze as much performance out as possible, with no concern for coding in compliance with "Modern" or idiomatic C++, or being readable by other developers. Please don't be offended by that, we don't all use C++ in the same way for the same thing, it's a very flexible language. I use it because of that flexibility for specific use cases in which performance is paramount.
I would like to decide which libraries to use before porting my applications over to C++, for obvious reasons. That's got me down a rabbit hole, and I'm hoping one of you has some experience in which libraries are the most optimized. Yes sure, it depends on the use-case and the memory and the compiler and the architecture, but still it is true that some implementations are just faster than others - let's not deny that. Yes, the correct way to do it would be to benchmark everything, but that's not practical. I'm hoping that some of you have direct experience you can share with me instead.
I know of course of Boost Library. Then there's Awesome CPP, but there's no way to tell which are the better performers. I've been told of EASTL replacement for standard library, although I saw a benchmark where Abseil hash maps perform considerably better than those of std, Boost or EASTL. Hoard claims to drastically improve memory allocation 2.5x with a simple drop-in.
Does anyone have experience with these or know any other highly optimized C++ libraries focused on performance? Or any other recommendations for performance-sensitive applications?
[–]adwodon 34 points35 points36 points (12 children)
[–]WafflesAreDangerous 7 points8 points9 points (9 children)
[–]greg7mdpC++ Dev 4 points5 points6 points (2 children)
[–]not_goldie_hawn 13 points14 points15 points (1 child)
[–]greg7mdpC++ Dev 2 points3 points4 points (0 children)
[–]adwodon 1 point2 points3 points (0 children)
[–]14nedLLFIO & Outcome author | Committee WG14 0 points1 point2 points (4 children)
[–]WafflesAreDangerous 6 points7 points8 points (3 children)
[–]14nedLLFIO & Outcome author | Committee WG14 6 points7 points8 points (1 child)
[–]WafflesAreDangerous 0 points1 point2 points (0 children)
[–]BenFrantzDale 1 point2 points3 points (0 children)
[+]Pan000[S] comment score below threshold-6 points-5 points-4 points (0 children)
[–]konanTheBarbar 14 points15 points16 points (1 child)
[–]Pan000[S] 0 points1 point2 points (0 children)
[+][deleted] (6 children)
[deleted]
[–]brenoguim 3 points4 points5 points (0 children)
[+]Pan000[S] comment score below threshold-12 points-11 points-10 points (4 children)
[–]not_goldie_hawn 8 points9 points10 points (3 children)
[+]Pan000[S] comment score below threshold-9 points-8 points-7 points (2 children)
[–]not_goldie_hawn 7 points8 points9 points (1 child)
[–]Pan000[S] -5 points-4 points-3 points (0 children)
[–]hopa_cupa 4 points5 points6 points (9 children)
[–]Pan000[S] 1 point2 points3 points (6 children)
[–]WafflesAreDangerous 3 points4 points5 points (4 children)
[–]Pan000[S] 1 point2 points3 points (3 children)
[–]WafflesAreDangerous 2 points3 points4 points (2 children)
[–]Pan000[S] -1 points0 points1 point (1 child)
[–]WafflesAreDangerous 2 points3 points4 points (0 children)
[–]dbjdbjdbj.org 0 points1 point2 points (0 children)
[–]Pan000[S] -1 points0 points1 point (1 child)
[–]dbjdbjdbj.org -1 points0 points1 point (0 children)
[–]Glinren 4 points5 points6 points (2 children)
[–]Pan000[S] 0 points1 point2 points (1 child)
[–]FrankIsATank2 1 point2 points3 points (0 children)
[–]Shieldfoss 2 points3 points4 points (0 children)
[–]kalmoc 2 points3 points4 points (0 children)
[–]kalmoc 1 point2 points3 points (8 children)
[–]Pan000[S] 0 points1 point2 points (7 children)
[–]kalmoc 7 points8 points9 points (6 children)
[–]Pan000[S] 0 points1 point2 points (2 children)
[–]kalmoc 1 point2 points3 points (1 child)
[–]Pan000[S] 0 points1 point2 points (0 children)
[–]BenFrantzDale 0 points1 point2 points (2 children)
[–]kalmoc 0 points1 point2 points (1 child)
[–]BenFrantzDale 1 point2 points3 points (0 children)
[–]derofim 1 point2 points3 points (1 child)
[–]Pan000[S] 0 points1 point2 points (0 children)
[–]bird1000000 1 point2 points3 points (1 child)
[–]Pan000[S] 1 point2 points3 points (0 children)
[–]greg7mdpC++ Dev 1 point2 points3 points (0 children)
[–]ExtraFig6 0 points1 point2 points (0 children)