All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alejandro Colomar <alx@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Alejandro Colomar <alx+linux-hardening@kernel.org>,
	 Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	 linux-hardening@vger.kernel.org,
	Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>,
	 Andreas Schwab <schwab@linux-m68k.org>,
	Andy Shevchenko <andy@kernel.org>,
	 Bartosz Golaszewski <brgl@kernel.org>,
	Daniel Scally <djrscally@gmail.com>,
	 Danilo Krummrich <dakr@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	 Hans Verkuil <hverkuil-cisco@xs4all.nl>,
	Heikki Krogerus <heikki.krogerus@linux.intel.com>,
	 Joe Perches <joe@perches.com>, Johan Hovold <johan@kernel.org>,
	Kees Cook <kees@kernel.org>,
	 Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Len Brown <lenb@kernel.org>, Linus Walleij <linusw@kernel.org>,
	 Namhyung Kim <namhyung@kernel.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	 Rob Herring <robh@kernel.org>,
	Sakari Ailus <sakari.ailus@linux.intel.com>,
	 Saravana Kannan <saravanak@kernel.org>,
	linux-acpi@vger.kernel.org, driver-core@lists.linux.dev,
	 linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
	linux-gpio@vger.kernel.org
Subject: Re: [PATCH v1 1/2] string: Add strprefix(), and deprecate str_has_prefix()
Date: Thu, 5 Nov 2026 23:25:15 +0100	[thread overview]
Message-ID: <auz79Izf6Q5qOQPi@devuan> (raw)
In-Reply-To: <CAHk-=wjD-fQvBvozu7+TjXa4=arAFgVzyixw4W_A=14Y8rhSLA@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 4022 bytes --]

Hi Linus,

> Date: 2026-11-05 13:48:18-0800
> From: Linus Torvalds <torvalds@linux-foundation.org>
>
> On Thu, 5 Nov 2026 at 13:24, Alejandro Colomar
> <alx+linux-hardening@kernel.org> wrote:
> >
> > I think it might indeed be that find(1) is slow at filtering, because
> > using git-ls-files(1) is faster without piping to grep(1):
> 
> No. Your find | grep" speedup is because you use two cores for this.
> So it's slower, but does it in parallel, which is faster on a machine
> with idle cores.
> 
> The reason git ls-files is faster is different: it's because git
> ls-files is just that fast.
> 
> And it's so fast that now the pipe overhead is much much more
> expensive than git itself, and so doing "git ls-files | grep" is
> slower and only adds overhead even if you have idle cores.
> 
> And the reason git ls-files is so fast is because it doesn't do any
> directory searches. It just looks at the git index file.
> 
> So git ls-files really does something very different from 'find'. It
> just looks at the files that git already knows about, and it basically
> only opens '.git/index' and parses it.

Oh, thanks!  That makes sense.

[...]
> 
> Anyway, if you search sources and don't want to care about object
> files or other generated files etc, I'd heavily suggest using "git
> ls-files" and "git grep" exactly because it's much faster.

Indeed, git-ls-files(1) seems more appropriate than find(1), especially
after having built a kernel, which makes find(1) go turtle-slow and list
the built stuff.

> (Ok, "git grep" isn't always faster, the whole regex algorithm issue
> can go both ways, but 'git grep' does do the same "just look at files
> that are actually known to git" thing, and obviously it can look at
> different revisions etc too, so it's really *good* at greapping the
> actual committed history, although if you go back in history you'll
> obviously be paying a much higher price because now the cost is often
> not the regex, but the unpacking of the objects etc)

I'm not a fan of git-grep(1), because it's easier to remember grep(1),
as I already need to remember it for other stuff.

But yeah, a pipe `git ls-files | xargs grep ...` seems what I'd be
using.  After all, the slow thing is find(1), not grep(1).  And I like
the separation of concerns, so that one program is listing files, and
another one is searching their contents.

I'm finding some issues with git-ls-files(1), though: it's listing
symlinks, which grep(1) complains about.  I wish I could discard those
with something like '-type f'.

	$ time git ls-files | xargs grep ARRAY_SIZE | wc -l
	grep: scripts/dtc/include-prefixes/arc: Is a directory
	grep: scripts/dtc/include-prefixes/arm: Is a directory
	grep: scripts/dtc/include-prefixes/arm64: Is a directory
	grep: scripts/dtc/include-prefixes/dt-bindings: Is a directory
	grep: scripts/dtc/include-prefixes/microblaze: Is a directory
	grep: scripts/dtc/include-prefixes/mips: Is a directory
	grep: scripts/dtc/include-prefixes/nios2: Is a directory
	grep: scripts/dtc/include-prefixes/openrisc: Is a directory
	grep: scripts/dtc/include-prefixes/powerpc: Is a directory
	grep: scripts/dtc/include-prefixes/riscv: Is a directory
	grep: scripts/dtc/include-prefixes/sh: Is a directory
	grep: scripts/dtc/include-prefixes/xtensa: Is a directory
	grep: tools/testing/selftests/devices/probe/boards/Dell: No such file or directory
	grep: Inc.,XPS: No such file or directory
	grep: 13: No such file or directory
	grep: 9300.yaml: No such file or directory
	60570

	real	0m0.819s
	user	0m0.439s
	sys	0m0.430s
	$ time git grep ARRAY_SIZE | wc -l
	60568

	real	0m0.308s
	user	0m0.443s
	sys	0m1.172s

When searching in old versions, I usually am git-blame(1)ing stuff, so
I already know which file to list.  In that case, I tend to do
`git show v6.0:some/file.c | grep something`.


Have a lovely night!
Alex

> 
>             Linus

-- 
<https://www.alejandro-colomar.es>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2026-11-05 22:25 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-05 11:12 [PATCH v1 0/2] Add strprefix() and fix a bug with it Alejandro Colomar
2026-11-05 11:21 ` Alejandro Colomar
2026-11-05 11:13 ` [PATCH v1 1/2] string: Add strprefix(), and deprecate str_has_prefix() Alejandro Colomar
2026-11-05 11:27   ` Andy Shevchenko
2026-11-05 12:28     ` Alejandro Colomar
2026-11-05 16:14   ` Steven Rostedt
2026-11-05 16:33     ` Alejandro Colomar
2026-11-05 16:50       ` Steven Rostedt
2026-11-05 17:46         ` Alejandro Colomar
2026-11-05 18:08           ` Andy Shevchenko
2026-11-05 18:12             ` Andy Shevchenko
2026-11-05 21:24               ` Alejandro Colomar
2026-11-05 21:48                 ` Linus Torvalds
2026-11-05 22:25                   ` Alejandro Colomar [this message]
2026-11-05 23:21                     ` Linus Torvalds
2026-11-06  0:01                       ` Alejandro Colomar
2026-11-06  7:15             ` Krzysztof Kozlowski
2026-11-05 11:13 ` [PATCH v1 2/2] device property: Fix fwnode_name_eq() for empty node names Alejandro Colomar
2026-11-05 11:24 ` [PATCH v1 0/2] Add strprefix() and fix a bug with it Andy Shevchenko
2026-11-05 11:38   ` Alejandro Colomar
2026-11-05 11:59     ` Andy Shevchenko
2026-11-05 12:30 ` Bartosz Golaszewski
2026-11-05 12:49   ` Alejandro Colomar
2026-11-05 12:46 ` [PATCH v2 " Alejandro Colomar
2026-11-05 12:46   ` [PATCH v2 1/2] string: Add strprefix(), and deprecate str_has_prefix() Alejandro Colomar
2026-11-05 12:51     ` Geert Uytterhoeven
2026-11-05 13:12       ` Alejandro Colomar
2026-11-07  2:44         ` Maciej W. Rozycki
2026-11-07  7:33           ` Alejandro Colomar
2026-11-05 12:46   ` [PATCH v2 2/2] device property: Fix fwnode_name_eq() for empty node names Alejandro Colomar
2026-11-05 14:01   ` [PATCH v2 0/2] Add strprefix() and fix a bug with it Bartosz Golaszewski
2026-11-05 14:16     ` Alejandro Colomar
2026-11-05 14:42       ` Andy Shevchenko
2026-11-05 15:06         ` Alejandro Colomar
2026-11-07  2:42         ` Maciej W. Rozycki
2026-11-07 14:05           ` Andy Shevchenko
2026-11-05 15:00       ` Bartosz Golaszewski
2026-11-05 15:14         ` Alejandro Colomar
2026-11-05 15:21       ` Krzysztof Kozlowski
2026-11-05 16:27         ` Steven Rostedt
2026-11-05 16:30           ` Krzysztof Kozlowski
2026-11-05 16:42         ` Alejandro Colomar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=auz79Izf6Q5qOQPi@devuan \
    --to=alx@kernel.org \
    --cc=alx+linux-hardening@kernel.org \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=andy@kernel.org \
    --cc=bartosz.golaszewski@oss.qualcomm.com \
    --cc=brgl@kernel.org \
    --cc=dakr@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=djrscally@gmail.com \
    --cc=driver-core@lists.linux.dev \
    --cc=gregkh@linuxfoundation.org \
    --cc=heikki.krogerus@linux.intel.com \
    --cc=hverkuil-cisco@xs4all.nl \
    --cc=joe@perches.com \
    --cc=johan@kernel.org \
    --cc=kees@kernel.org \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=lenb@kernel.org \
    --cc=linusw@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-hardening@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=namhyung@kernel.org \
    --cc=rafael@kernel.org \
    --cc=robh@kernel.org \
    --cc=rostedt@goodmis.org \
    --cc=sakari.ailus@linux.intel.com \
    --cc=saravanak@kernel.org \
    --cc=schwab@linux-m68k.org \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.