Seems like std::bitset<N>
under the hood is an array of unsigned longs
now, this means that there will be an (heavy?) overhead when N is small. sizeof(std::bitset<8>)
is 8 bytes
!
Is there a reason why the type of underlying array itself is not a template
parameter? Why does the implementation not use uint32_t/16_t/8_t
when more appropriate? I do not see anything in the implementation that limits this?
I am guessing I am missing a particular reason but unsure how to look for it or maybe there is no reason at all ? Since this is such a simple container
I am not able to understand how the zero overhead principle of C++
seems to be avoided here.
GCC Impl: https://gcc.gnu.org/onlinedocs/gcc-4.6.2/libstdc++/api/a00775_source.html
I believe clang is similar (used sizeof to confirm)
Aucun commentaire:
Enregistrer un commentaire