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

[PATCH] xdiff: optimise for no whitespace difference when ignoring whitespace.

From
Dylan Reid <dgreid@gmail.com>
Date
Jul 5, 2010, 13:00 UTC
Message-ID
<1278334842-9701-1-git-send-email-dgreid@gmail.com>
In-Reply-To
<1278310017-24299-1-git-send-email-dgreid@gmail.com>

In xdl_recmatch, do the memcmp to check if the two lines are equal before checking if whitespace flags are set. If the lines are identicle, then there is no need to check if they differ only in whitespace. This makes the common case (there is no whitespace difference) faster. It costs the case where lines are the same length and contain whitespace differences, but the common case is more than 20% faster.

Signed-off-by: Dylan Reid <dgreid@gmail.com>
---
 xdiff/xutils.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/xdiff/xutils.c b/xdiff/xutils.c
index bc12f29..22f9bd6 100644
--- a/xdiff/xutils.c
+++ b/xdiff/xutils.c
@@ -190,8 +190,10 @@ int xdl_recmatch(const char *l1, long s1, const char *l2, long s2, long flags)
 {
 	int i1, i2;
 
+	if (s1 == s2 && !memcmp(l1, l2, s1))
+		return 1;
 	if (!(flags & XDF_WHITESPACE_FLAGS))
-		return s1 == s2 && !memcmp(l1, l2, s1);
+		return 0;
 
 	i1 = 0;
 	i2 = 0;
-- 
1.7.1
Previous: Dylan ReidNext: Junio C Hamano
Message 4 of 7 in “xdiff: optimise for no whitespace difference when ignoring whitespace.”
  1. xdiff: optimise for no whitespace difference when ignoring whitespace.Dylan Reid, Jul 5, 2010
  2. Michael J GruberJul 5, 2010
  3. Dylan ReidJul 5, 2010
  4. xdiff: optimise for no whitespace difference when ignoring whitespace.Dylan Reid, Jul 5, 2010
  5. Junio C HamanoJul 6, 2010
  6. Dylan ReidJul 6, 2010
  7. xdiff: optimise for no whitespace difference when ignoring whitespace.Dylan Reid, Jul 6, 2010

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.