about summary refs log tree commit diff
path: root/src/libcore
diff options
context:
space:
mode:
authorCorey Farwell <coreyf@rwell.org>2017-03-17 08:49:05 -0400
committerGitHub <noreply@github.com>2017-03-17 08:49:05 -0400
commitf90fab5b264d21acb6826ff7e659101146eb475b (patch)
treeb3d1f2b41645ea22865986f898a81cba9ad94ddc /src/libcore
parent1909b62e79aaa70a1b40ffe48bdd7f779a3777a7 (diff)
parent8af30132f14737a8d41db48aad9e78df396d8990 (diff)
downloadrust-f90fab5b264d21acb6826ff7e659101146eb475b.tar.gz
rust-f90fab5b264d21acb6826ff7e659101146eb475b.zip
Rollup merge of #40514 - stjepang:inline-then-ordering, r=alexcrichton
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.

The problem was reported in #37053.
Diffstat (limited to 'src/libcore')
-rw-r--r--src/libcore/cmp.rs2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/libcore/cmp.rs b/src/libcore/cmp.rs
index cc066099cf8..b43fe757d84 100644
--- a/src/libcore/cmp.rs
+++ b/src/libcore/cmp.rs
@@ -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 {