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

[PATCH v2 0/5] Speed up string search routines

From
Fredrik Kuivinen <frekui@gmail.com>
Date
Aug 20, 2011, 22:40 UTC
Message-ID
<20110820224003.GA2199@fredrik-Q430-Q530>

This is v2 of a series sent a long time ago, in February 2010. The patches speed up git grep and pickaxe by using the string search routines from GNU grep.

Changes since v1:
* Rebased on top of current master.
* obstack.[ch] is now in compat/ (comment by Junio)
* kwset.[ch] is from the latest GNU grep commit which uses GPLv2. The
  newer commits uses GPLv3, which is incompatible with GPLv2 used by
  Git. There are no significant changes between the two. (pointed out
  by Dmitry Potapov and Paolo Bonzini)
* Two new tests for git grep are fixed by this code, see patch 5 for
  details.

In v1 Paolo pointed out that the kwset code is never used with more than one string and therefore a much simpler Boyer-Moore search would be sufficient (a kwset containing only one string uses a Boyer-Moore search). However, the Boyer-Moore search implemented in kwset cannot deal with case-insensitive searches, so the more complicated code is still there.

---
Fredrik Kuivinen (5):
      Add obstack.[ch] from EGLIBC 2.10
      Add string search routines from GNU grep
      Adapt the kwset code to Git
      Use kwset in pickaxe
      Use kwset in grep
 Makefile               |    4 
 compat/obstack.c       |  441 +++++++++++++++++++++++++++
 compat/obstack.h       |  509 ++++++++++++++++++++++++++++++++
 diffcore-pickaxe.c     |   34 +-
 grep.c                 |   66 +++-
 grep.h                 |    2 
 kwset.c                |  771 ++++++++++++++++++++++++++++++++++++++++++++++++
 kwset.h                |   63 ++++
 t/t7008-grep-binary.sh |    4 
 9 files changed, 1860 insertions(+), 34 deletions(-)
 create mode 100644 compat/obstack.c
 create mode 100644 compat/obstack.h
 create mode 100644 kwset.c
 create mode 100644 kwset.h
Message 1 of 1 in “Speed up string search routines”
  1. 0/5 Speed up string search routinesFredrik Kuivinen, Aug 20, 2011

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.