git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] Make strbuf_cmp inline, constify its arguments and optimize it a bit

From
Alex Riesen <raa.lkml@gmail.com>
Date
Oct 7, 2007, 14:00 UTC
Message-ID
<20071007140052.GA3260@steel.home>
In-Reply-To
<1190625904-22808-2-git-send-email-madcoder@debian.org>

It is definitely less code (also object code). It is not always measurably faster (but mostly is).

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
---
 strbuf.c |   12 ------------
 strbuf.h |    9 ++++++++-
 2 files changed, 8 insertions(+), 13 deletions(-)
diff --git a/strbuf.c b/strbuf.c
index f4201e1..215837b 100644
--- a/strbuf.c
+++ b/strbuf.c
@@ -58,18 +58,6 @@ void strbuf_rtrim(struct strbuf *sb)
 	sb->buf[sb->len] = '\0';
 }
 
-int strbuf_cmp(struct strbuf *a, struct strbuf *b)
-{
-	int cmp;
-	if (a->len < b->len) {
-		cmp = memcmp(a->buf, b->buf, a->len);
-		return cmp ? cmp : -1;
-	} else {
-		cmp = memcmp(a->buf, b->buf, b->len);
-		return cmp ? cmp : a->len != b->len;
-	}
-}
-
 void strbuf_splice(struct strbuf *sb, size_t pos, size_t len,
 				   const void *data, size_t dlen)
 {
diff --git a/strbuf.h b/strbuf.h
index 9b9e861..3116387 100644
--- a/strbuf.h
+++ b/strbuf.h
@@ -78,7 +78,14 @@ static inline void strbuf_setlen(struct strbuf *sb, size_t len) {
 
 /*----- content related -----*/
 extern void strbuf_rtrim(struct strbuf *);
-extern int strbuf_cmp(struct strbuf *, struct strbuf *);
+static inline int strbuf_cmp(const struct strbuf *a, const struct strbuf *b)
+{
+	int len = a->len < b->len ? a->len: b->len;
+	int cmp = memcmp(a->buf, b->buf, len);
+	if (cmp)
+		return cmp;
+	return a->len < b->len ? -1: a->len != b->len;
+}
 
 /*----- add data in your buffer -----*/
 static inline void strbuf_addch(struct strbuf *sb, int c) {
-- 
1.5.3.4.223.g78587
Previous: Pierre HabouzitNext: Timo Hirvonen
Message 5 of 25 in “mini-refactor in rerere.c”
  1. Pierre HabouzitSep 24, 2007
  2. Johannes SchindelinSep 24, 2007
  3. Junio C HamanoSep 26, 2007
  4. Pierre HabouzitSep 26, 2007
  5. Make strbuf_cmp inline, constify its arguments and optimize it a bitAlex Riesen, Oct 7, 2007
  6. Timo HirvonenOct 7, 2007
  7. Pierre HabouzitOct 7, 2007
  8. Miles BaderOct 7, 2007
  9. David KastrupOct 7, 2007
  10. Alex RiesenOct 7, 2007
  11. Wincent ColaiutaOct 7, 2007
  12. Alex RiesenOct 7, 2007
  13. Miles BaderOct 8, 2007
  14. Pierre HabouzitOct 8, 2007
  15. Florian WeimerOct 8, 2007
  16. Alex RiesenOct 8, 2007
  17. Johannes SchindelinOct 7, 2007
  18. Timo HirvonenOct 7, 2007
  19. Johannes SchindelinOct 7, 2007
  20. Pierre HabouzitOct 7, 2007
  21. David KastrupOct 7, 2007
  22. Alex RiesenOct 7, 2007
  23. David KastrupOct 7, 2007
  24. Alex RiesenOct 7, 2007
  25. Jeff KingOct 8, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.