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

[PATCH 05/13] builtin-apply.c: optimize match_beginning/end processing a bit.

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 2, 2008, 10:54 UTC
Message-ID
<1201949659-27725-6-git-send-email-gitster@pobox.com>
In-Reply-To
<1201949659-27725-5-git-send-email-gitster@pobox.com>

Wnen the caller knows the hunk needs to match at the beginning or at the end, there is no point starting from the line number that is found in the patch and trying match with increasing offset. The logic to find matching lines was made more line oriented with the previous patch and this optimization is now trivial.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 builtin-apply.c |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/builtin-apply.c b/builtin-apply.c
index e046e87..dc650f1 100644
--- a/builtin-apply.c
+++ b/builtin-apply.c
@@ -1579,6 +1579,16 @@ static int find_pos(struct image *img,
 	if (preimage->nr > img->nr)
 		return -1;
 
+	/*
+	 * If match_begining or match_end is specified, there is no
+	 * point starting from a wrong line that will never match and
+	 * wander around and wait for a match at the specified end.
+	 */
+	if (match_beginning)
+		line = 0;
+	else if (match_end)
+		line = img->nr - preimage->nr;
+
 	try = 0;
 	for (i = 0; i < line; i++)
 		try += img->line[i].len;
-- 
1.5.4.2.g41ac4
Previous: Junio C HamanoNext: Junio C Hamano
Message 6 of 14 in “git-apply --whitespace=fix updates”
  1. 00/13 git-apply --whitespace=fix updatesJunio C Hamano, Feb 2, 2008
  2. 01/13 builtin-apply.c: refactor small part that matches contextJunio C Hamano, Feb 2, 2008
  3. 02/13 builtin-apply.c: restructure "offset" matchingJunio C Hamano, Feb 2, 2008
  4. 03/13 builtin-apply.c: push match-beginning/end logic downJunio C Hamano, Feb 2, 2008
  5. 04/13 builtin-apply.c: make it more line orientedJunio C Hamano, Feb 2, 2008
  6. 05/13 builtin-apply.c: optimize match_beginning/end processing a bit.Junio C Hamano, Feb 2, 2008
  7. 06/13 builtin-apply.c: mark common context lines in lineinfo structure.Junio C Hamano, Feb 2, 2008
  8. 07/13 builtin-apply.c: clean-up apply_one_fragment()Junio C Hamano, Feb 2, 2008
  9. 08/13 builtin-apply.c: simplify calling site to apply_line()Junio C Hamano, Feb 2, 2008
  10. 09/13 builtin-apply.c: do not feed copy_wsfix() leading '+'Junio C Hamano, Feb 2, 2008
  11. 10/13 builtin-apply.c: move copy_wsfix() function a bit higher.Junio C Hamano, Feb 2, 2008
  12. 11/13 builtin-apply.c: pass ws_rule down to match_fragment()Junio C Hamano, Feb 2, 2008
  13. 12/13 git-apply --whitespace=fix: fix whitespace fuzz introduced by previous runJunio C Hamano, Feb 2, 2008
  14. 13/13 core.whitespace: cr-at-eolJunio C Hamano, Feb 2, 2008

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.