String class allocating on stack for small strings?

后端 未结 4 1710
臣服心动
臣服心动 2021-01-17 20:25

Do anyone know if there is a STL interface compatible string class that allocates memory for small strings on the stack (up to a certain threshold) and the heap for larger s

相关标签:
4条回答
  • 2021-01-17 20:39

    This is antique question, but I feel that this is better that any of the current answers.

    http://llvm.org/docs/ProgrammersManual.html#dss_smallstring

    Basically it is what you want. BTW tcmalloc increased perf in my (badly designed :D) string alloc intensive program 10%. Also you should profile to prove allocs are your perf problem.

    0 讨论(0)
  • 2021-01-17 20:40

    You can provide a custom allocator for std::basic_string (it is the third template argument). This answer explains how use that and links to an implementation of a stack-allocator that can be used.

    0 讨论(0)
  • 2021-01-17 20:41

    The vstring (__versa_string) implementation from gcc can do the small string optimization and has a std string interface. If you happen to be using gcc it's easy enough to include ext/vstring. Otherwise you may be able to adapt it to your compiler/enviroent.

    0 讨论(0)
  • 2021-01-17 20:49

    __versa_string SSO version can store no more than 15 bytes on the stack and if it does, it reserves 16 bytes regardless of the string size ( http://codepad.org/2M7N9cTu ).

    http://www.and.org/ustr/ can reuse a stack buffer, but I had problems linking with it under Debian Wheezy 64bit.

    http://freecode.com/projects/str-class can reuse a stack buffer.

    I wrote a header-only string class which uses just four bytes and can reuse a stack buffer: http://code.google.com/p/libglim/source/browse/trunk/gstring.hpp
    It has a limited STL compatibility: basic_streambuf implemented for use with std::ostream.

    0 讨论(0)
提交回复
热议问题