Inline functions Ordering::{then, then_with}

@jongiddy noticed bad performance due to the lack of inlining on `then`
and `then_with`. I confirmed that inlining really is the culprit by
creating a custom `then` function and repeating his benchmark on my
machine with and without the `#[inline]` attribute.

The numbers were exactly the same on my machine without the attribute.
With `#[inline]` I got the same performance as I did with manually
inlined implementation.
This commit is contained in:
Stjepan Glavina 2017-03-14 14:01:01 +01:00
parent fa53235cc4
commit 8af30132f1
1 changed files with 2 additions and 0 deletions

View File

@ -277,6 +277,7 @@ impl Ordering {
///
/// assert_eq!(result, Ordering::Less);
/// ```
#[inline]
#[unstable(feature = "ordering_chaining", issue = "37053")]
pub fn then(self, other: Ordering) -> Ordering {
match self {
@ -315,6 +316,7 @@ impl Ordering {
///
/// assert_eq!(result, Ordering::Less);
/// ```
#[inline]
#[unstable(feature = "ordering_chaining", issue = "37053")]
pub fn then_with<F: FnOnce() -> Ordering>(self, f: F) -> Ordering {
match self {