bors-servo 88c32dfc0e Auto merge of #206 - hiddenhare:inline-constructors, r=mbrubeck
Add #[inline] attribute to all fns which return SmallVec

When rustc fails to inline a `SmallVec` constructor, it can carry a significant performance cost: for example, if `SmallVec::<[i64; 128]>::from_iter(...)` fails to inline, it will perform an unnecessary 1kb memcpy.

I've recently been bitten by this when using `SmallVec` in a context where rustc seemed to be reluctant to perform inlining (a large fn with nested closures). Switching from `SmallVec::from_iter` to `SmallVec::new` and `push`, with a buffer size of 256 bytes, saved over 20ns per call. For larger buffers, `from_iter` carried a proportionally higher cost, even when the actual capacity in use didn't change.
2020-04-05 00:43:32 -04:00
2018-08-22 22:14:23 +02:00
2020-03-17 19:32:21 -03:00
2019-12-09 18:16:07 +01:00
2019-12-06 09:41:14 +01:00
2019-10-29 21:36:59 -07:00
2020-03-17 17:37:31 -03:00
2018-06-06 09:19:13 -07:00
2018-06-06 09:19:13 -07:00
2019-12-19 08:33:51 -08:00

rust-smallvec

Documentation

Release notes

"Small vector" optimization for Rust: store up to a small number of items on the stack

Example

use smallvec::{SmallVec, smallvec};
    
// This SmallVec can hold up to 4 items on the stack:
let mut v: SmallVec<[i32; 4]> = smallvec![1, 2, 3, 4];

// It will automatically move its contents to the heap if
// contains more than four items:
v.push(5);

// SmallVec points to a slice, so you can use normal slice
// indexing and other methods to access its contents:
v[0] = v[1] + v[2];
v.sort();
S
Description
对于小的vector,存储在栈上以优化性能表现
Readme 1.1 MiB
Languages
Rust 98.8%
Shell 1.2%