]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
cmp.h: boost tuple comparison is replaced by regular comparison
authorSomnath Roy <somnath.roy@sandisk.com>
Wed, 22 Jan 2014 19:03:06 +0000 (11:03 -0800)
committerGreg Farnum <greg@inktank.com>
Fri, 31 Jan 2014 23:54:40 +0000 (15:54 -0800)
Profiler was showing this boost tuple comparison is expensive.
So, it is replaced by regular comparison.

Signed-off-by: Somnath Roy <somnath.roy@sandisk.com>
Signed-off-by: Greg Farnum <greg@inktank.com>
src/include/cmp.h

index d660c1923b0ceb13912cdfa38b185d50c2e11bdf..92ecef47990453a4aa2796983aa1fdfeb0747f52 100644 (file)
@@ -1,7 +1,5 @@
 #ifndef __CEPH_CMP_H
 #define __CEPH_CMP_H
-#include <boost/tuple/tuple.hpp>
-#include <boost/tuple/tuple_comparison.hpp>
 
 /*
  * macros to define comparison operators for classes with small numbers of members.
                                                      (l.d == r.d && l.e <= r.e))))))); \
   }
 
-#define WRITE_EQ_OPERATORS_7(type, a, b, c, d, e, f, g)                                                       \
-       inline bool operator==(const type &l, const type &r) {                                                      \
-               return (boost::make_tuple(boost::cref(l.a), boost::cref(l.b), boost::cref(l.c), boost::cref(l.d), boost::cref(l.e), boost::cref(l.f), boost::cref(l.g)) == \
-                                               boost::make_tuple(boost::cref(r.a), boost::cref(r.b), boost::cref(r.c), boost::cref(r.d), boost::cref(r.e), boost::cref(r.f), boost::cref(r.g)));  \
-       }                                                                                                           \
-       inline bool operator!=(const type &l, const type &r) {                                                      \
-               return (boost::make_tuple(boost::cref(l.a), boost::cref(l.b), boost::cref(l.c), boost::cref(l.d), boost::cref(l.e), boost::cref(l.f), boost::cref(l.g)) != \
-                                               boost::make_tuple(boost::cref(r.a), boost::cref(r.b), boost::cref(r.c), boost::cref(r.d), boost::cref(r.e), boost::cref(r.f), boost::cref(r.g)));  \
-       }
-#define WRITE_CMP_OPERATORS_7(type, a, b, c, d, e, f, g)                                                      \
-       inline bool operator<=(const type &l, const type &r) {                                                      \
-               return (boost::make_tuple(boost::cref(l.a), boost::cref(l.b), boost::cref(l.c), boost::cref(l.d), boost::cref(l.e), boost::cref(l.f), boost::cref(l.g)) <= \
-                                               boost::make_tuple(boost::cref(r.a), boost::cref(r.b), boost::cref(r.c), boost::cref(r.d), boost::cref(r.e), boost::cref(r.f), boost::cref(r.g)));  \
-       }                                                                                                           \
-       inline bool operator>=(const type &l, const type &r) {                                                      \
-               return (boost::make_tuple(boost::cref(l.a), boost::cref(l.b), boost::cref(l.c), boost::cref(l.d), boost::cref(l.e), boost::cref(l.f), boost::cref(l.g)) >= \
-                                               boost::make_tuple(boost::cref(r.a), boost::cref(r.b), boost::cref(r.c), boost::cref(r.d), boost::cref(r.e), boost::cref(r.f), boost::cref(r.g)));  \
-       }                                                                                                           \
-       inline bool operator>(const type &l, const type &r) {                                                       \
-               return (boost::make_tuple(boost::cref(l.a), boost::cref(l.b), boost::cref(l.c), boost::cref(l.d), boost::cref(l.e), boost::cref(l.f), boost::cref(l.g)) >  \
-                                               boost::make_tuple(boost::cref(r.a), boost::cref(r.b), boost::cref(r.c), boost::cref(r.d), boost::cref(r.e), boost::cref(r.f), boost::cref(r.g)));  \
-       }                                                                                                           \
-       inline bool operator<(const type &l, const type &r) {                                                       \
-               return (boost::make_tuple(boost::cref(l.a), boost::cref(l.b), boost::cref(l.c), boost::cref(l.d), boost::cref(l.e), boost::cref(l.f), boost::cref(l.g)) <  \
-                                               boost::make_tuple(boost::cref(r.a), boost::cref(r.b), boost::cref(r.c), boost::cref(r.d), boost::cref(r.e), boost::cref(r.f), boost::cref(r.g)));  \
-       }
+#define WRITE_EQ_OPERATORS_7(type, a, b, c, d, e, f, g)                        \
+  inline bool operator==(const type &l, const type &r) {               \
+    return l.a == r.a && l.b == r.b && l.c == r.c && l.d == r.d && l.e == r.e && l.f == r.f && l.g == r.g; \
+  }                                                                    \
+  inline bool operator!=(const type &l, const type &r) {               \
+    return l.a != r.a || l.b != r.b || l.c != r.c || l.d != r.d || l.e != r.e || l.f != r.f || l.g != r.g; \
+  }
+#define WRITE_CMP_OPERATORS_7(type, a, b, c, d, e, f, g)               \
+  inline bool operator<=(const type &l, const type &r) {               \
+    return l.a < r.a ||                                                        \
+      (l.a == r.a && (l.b < r.b ||                                     \
+                     (l.b == r.b && (l.c < r.c ||                      \
+                                     (l.c == r.c && (l.d < r.d ||      \
+                                                     (l.d == r.d && (l.e < r.e || \
+                                                                     (l.e == r.e && (l.f < r.f || \
+                                                                                     (l.f == r.f && l.g <= r.g))))))))))); \
+  }                                                                    \
+  inline bool operator>=(const type &l, const type &r) {               \
+    return l.a > r.a ||                                                        \
+      (l.a == r.a && (l.b > r.b ||                                     \
+                     (l.b == r.b && (l.c > r.c ||                      \
+                                     (l.c == r.c && (l.d > r.d ||      \
+                                                     (l.d == r.d && (l.e > r.e || \
+                                                                     (l.e == r.e && (l.f > r.f || \
+                                                                                     (l.f == r.f && l.g >= r.g))))))))))); \
+  }                                                                    \
+  inline bool operator>(const type &l, const type &r) {                        \
+    return l.a > r.a ||                                                        \
+      (l.a == r.a && (l.b > r.b ||                                     \
+                     (l.b == r.b && (l.c > r.c ||                      \
+                                     (l.c == r.c && (l.d > r.d ||      \
+                                                     (l.d == r.d && (l.e > r.e || \
+                                                                     (l.e == r.e && (l.f > r.f || \
+                                                                                     (l.f == r.f && l.g > r.g))))))))))); \
+  }                                                                    \
+  inline bool operator<(const type &l, const type &r) {                        \
+    return l.a < r.a ||                                                        \
+      (l.a == r.a && (l.b < r.b ||                                     \
+                     (l.b == r.b && (l.c < r.c ||                      \
+                                     (l.c == r.c && (l.d < r.d ||      \
+                                                     (l.d == r.d && (l.e < r.e || \
+                                                                     (l.e == r.e && (l.f < r.f || \
+                                                                                     (l.f == r.f && l.g < r.g))))))))))); \
+  }
 #endif