Skip to content

Add benchmarks for smallvec when it's on the stack #97

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Merged
merged 2 commits into from
May 22, 2018

Conversation

eira-fransham
Copy link
Contributor

@eira-fransham eira-fransham commented May 18, 2018

This makes all the benchmarks generic so the addition of the _small variants didn't totally blow up the line count, which as an added bonus also means we don't get duplication between the vec and smallvec benchmarks.

Results:

 name                           vec.bench ns/iter          smallvec.bench ns/iter          diff ns/iter   diff %  speedup 
 bench_extend                   70                         102                                       32   45.71%   x 0.69 
 bench_extend_from_slice        65                         52                                       -13  -20.00%   x 1.25 
 bench_extend_from_slice_small  29                         24                                        -5  -17.24%   x 1.21 
 bench_extend_small             28                         25                                        -3  -10.71%   x 1.12 
 bench_from_slice               34                         97                                        63  185.29%   x 0.35 
 bench_from_slice_small         31                         36                                         5   16.13%   x 0.86 
 bench_insert                   1,235                      1,224                                    -11   -0.89%   x 1.01 
 bench_insert_small             114                        117                                        3    2.63%   x 0.97 
 bench_macro_from_elem          45                         55                                        10   22.22%   x 0.82 
 bench_macro_from_elem_small    33                         17                                       -16  -48.48%   x 1.94 
 bench_macro_from_list          33                         47                                        14   42.42%   x 0.70 
 bench_push                     379                        462                                       83   21.90%   x 0.82 
 bench_push_small               53                         57                                         4    7.55%   x 0.93 
 bench_pushpop                  252                        307                                       55   21.83%   x 0.82 

This change is Reviewable

@mbrubeck
Copy link
Collaborator

@bors-servo r+

@bors-servo
Copy link
Contributor

📌 Commit 25255c8 has been approved by mbrubeck

@bors-servo
Copy link
Contributor

⌛ Testing commit 25255c8 with merge 675221e...

bors-servo pushed a commit that referenced this pull request May 22, 2018
Add benchmarks for smallvec when it's on the stack

This makes all the benchmarks generic so the addition of the `_small` variants didn't totally blow up the line count, which as an added bonus also means we don't get duplication between the vec and smallvec benchmarks.

Results:

```
 name                           vec.bench ns/iter          smallvec.bench ns/iter          diff ns/iter   diff %  speedup
 bench_extend                   70                         102                                       32   45.71%   x 0.69
 bench_extend_from_slice        65                         52                                       -13  -20.00%   x 1.25
 bench_extend_from_slice_small  29                         24                                        -5  -17.24%   x 1.21
 bench_extend_small             28                         25                                        -3  -10.71%   x 1.12
 bench_from_slice               34                         97                                        63  185.29%   x 0.35
 bench_from_slice_small         31                         36                                         5   16.13%   x 0.86
 bench_insert                   1,235                      1,224                                    -11   -0.89%   x 1.01
 bench_insert_small             114                        117                                        3    2.63%   x 0.97
 bench_macro_from_elem          45                         55                                        10   22.22%   x 0.82
 bench_macro_from_elem_small    33                         17                                       -16  -48.48%   x 1.94
 bench_macro_from_list          33                         47                                        14   42.42%   x 0.70
 bench_push                     379                        462                                       83   21.90%   x 0.82
 bench_push_small               53                         57                                         4    7.55%   x 0.93
 bench_pushpop                  252                        307                                       55   21.83%   x 0.82
```

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/rust-smallvec/97)
<!-- Reviewable:end -->
@bors-servo
Copy link
Contributor

☀️ Test successful - status-travis
Approved by: mbrubeck
Pushing 675221e to master...

@bors-servo bors-servo merged commit 25255c8 into servo:master May 22, 2018
mbrubeck added a commit to mbrubeck/rust-smallvec that referenced this pull request Jul 19, 2018
Changes in this release:

* Fix possible double-free in `insert_many` when passed an iterator that
  panics in `next` (servo#103)
* Add a new `union` feature (disabled by default) that reduces the size
  of the SmallVec struct (servo#94)
* Improve performance of `extend` and `from_elem` (servo#93)
* Improve performance of `drop` (servo#100)
* Update dev-dependency on `bincode` (servo#102)
* Update to build without `std` on current Rust nightly (servo#104)
* Additional benchmarks (servo#95, servo#97).
mbrubeck added a commit to mbrubeck/rust-smallvec that referenced this pull request Jul 19, 2018
Changes in this release:

* Fix possible double-free in `insert_many` when passed an iterator that
  panics in `next` (servo#103)
* Add a new `union` feature (disabled by default) that reduces the size
  of the SmallVec struct (servo#94)
* Improve performance of `extend` and `from_elem` (servo#93)
* Improve performance of `drop` (servo#100)
* Update dev-dependency on `bincode` (servo#102)
* Update to build without `std` on current Rust nightly (servo#104)
* Additional benchmarks (servo#95, servo#97).
@mbrubeck mbrubeck mentioned this pull request Jul 19, 2018
bors-servo pushed a commit that referenced this pull request Jul 19, 2018
Version 0.6.3

Changes in this release:

* Fix possible double-free in `insert_many` when passed an iterator that panics in `next` (#103)
* Add a new `union` feature (disabled by default) that reduces the size of the SmallVec struct (#94)
* Improve performance of `extend` and `from_elem` (#93)
* Improve performance of `drop` (#100)
* Update to build without `std` feature on current Rust nightly (#104)
* Additional benchmarks (#95, #97)
* Update dev-dependency on `bincode` (#102)

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/rust-smallvec/105)
<!-- Reviewable:end -->
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants