| commit | 14cbe540317f598aff822aaf8b28bdcd8e0af8ea | [log] [tgz] |
|---|---|---|
| author | Anton Sol <AntonSol919@gmail.com> | Wed Jan 17 19:30:57 2024 +0100 |
| committer | Lukas Wirth <lukastw97@gmail.com> | Wed Jan 31 18:59:27 2024 +0100 |
| tree | 905ef6f6dda204662b292e32b467943957244a5d | |
| parent | 01114d2f9c1b0403f819f1eb42a6726c9b5ab1bd [diff] |
add benchmarks This regressed from a previous attempt. The worst of the old results were in the range 450.000 current: test bench::bench_derive_clone ... bench: 1,653,247 ns/iter (+/- 32,781) test bench::bench_match_clone ... bench: 1,716,482 ns/iter (+/- 34,192) test bench::bench_new_clone ... bench: 1,717,985 ns/iter (+/- 52,137)
A SmolStr is a string type that has the following properties:
size_of::<SmolStr>() == 24 (therefore == size_of::<String>() on 64 bit platforms)Clone is O(1)WS (see src/lib.rs). Such strings consist solely of consecutive newlines, followed by consecutive spacesSmolStr can be explicitly created from a &'static str without allocationUnlike String, however, SmolStr is immutable. The primary use case for SmolStr is a good enough default storage for tokens of typical programming languages. Strings consisting of a series of newlines, followed by a series of whitespace are a typical pattern in computer programs because of indentation. Note that a specialized interner might be a better solution for some use cases.
Minimal Supported Rust Version: latest stable.
Bumping MSRV is not considered a semver-breaking change.