git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] add likely/unlikely hints
@ 2011-04-28 16:34 Dmitry Potapov
  0 siblings, 0 replies; only message in thread
From: Dmitry Potapov @ 2011-04-28 16:34 UTC (permalink / raw)
  To: git; +Cc: Ingo Molnar, Jonathan Nieder

Usually modern CPUs work fine even when the most likely branch is not local,
thus these hints do not provide noticeable wins, but in a situation of some
loop that usually executed only once, the compiler may aggressively unroll
the loop making the code bigger and slower when the loop is executed only
once. So, for such rare situations, these hints may be helpful.

Signed-off-by: Dmitry Potapov <dpotapov@gmail.com>
---

 git-compat-util.h |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/git-compat-util.h b/git-compat-util.h
index 40498b3..f690b29 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -60,6 +60,15 @@
 /* Approximation of the length of the decimal representation of this type. */
 #define decimal_length(x)	((int)(sizeof(x) * 2.56 + 0.5) + 1)
 
+/* Hints for branch prediction */
+#if defined(__GNUC__) && (__GNUC__ >= 3)
+#define likely(x)	__builtin_expect(!!(x), 1)
+#define unlikely(x)	__builtin_expect(!!(x), 0)
+#else
+#define likely(x)	(!!(x))
+#define unlikely(x)	(!!(x))
+#endif
+
 #if defined(__sun__)
  /*
   * On Solaris, when _XOPEN_EXTENDED is set, its header file
-- 
1.7.5

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2011-04-28 16:34 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-04-28 16:34 [PATCH] add likely/unlikely hints Dmitry Potapov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).