Crates.io | flexible-string |
lib.rs | flexible-string |
version | 0.1.0 |
source | src |
created_at | 2022-01-19 04:48:43.91645 |
updated_at | 2022-01-19 04:48:43.91645 |
description | A stack heap flexible string designed to improve performance |
homepage | |
repository | https://github.com/SpriteOvO/flexible-string |
max_upload_size | |
id | 516528 |
size | 99,271 |
A stack heap flexible string designed to improve performance.
FlexibleString
was first implemented in spdlog-rs crate, which improved performance for spdlog-rs by about double (see benchmarks of spdlog-rs). Now it is extracted to a separate crate for use by other crates.
For more details, please read the crate documentation.
You can use FlexibleString
almost as well as standard String
.
use flexible_string::FlexibleString;
let mut string = FlexibleString::<250>::from("hello");
string.push(',');
string.push_str("world");
assert_eq!(string, "hello,world");
Run cargo +nightly bench
in the root directory of this repository for benchmarking.
The following results are generated with Windows 10 64 bit
and Intel i9-10900KF CPU @ 3.70GHz
.
FlexibleString
test bench_clone ... bench: 7 ns/iter (+/- 0)
test bench_from_str ... bench: 6 ns/iter (+/- 0)
test bench_push ... bench: 0 ns/iter (+/- 0)
test bench_push_str ... bench: 0 ns/iter (+/- 0)
std::string::String
test bench_clone ... bench: 46 ns/iter (+/- 0)
test bench_from_str ... bench: 40 ns/iter (+/- 0)
test bench_push ... bench: 41 ns/iter (+/- 0)
test bench_push_str ... bench: 39 ns/iter (+/- 0)
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.