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

Re: [PATCH] p3400: stop using tac(1)

From
Jeff King <peff@peff.net>
Date
Oct 5, 2021, 19:38 UTC
Message-ID
<YVyppmEGkNCxZ+5L@coredump.intra.peff.net>
In-Reply-To
<f6a1296f-f524-9042-7f88-9591522971af@web.de>
On Tue, Oct 05, 2021 at 08:45:38PM +0200, René Scharfe wrote:
Show 19 quoted lines
> Am 04.10.21 um 10:31 schrieb Jeff King:
> > On Sat, Oct 02, 2021 at 07:44:14PM +0200, René Scharfe wrote:
> >
> >> b3dfeebb92 (rebase: avoid computing unnecessary patch IDs, 2016-07-29)
> >> added a perf test that calls tac(1) from GNU core utilities.  Support
> >> systems without it by reversing the generated list using sort -nr
> >> instead.  sort(1) with options -n and -r is already used in other tests.
> >
> > Cute fix. With regular seq(1), this whole thing can become:
> >
> >   seq 1000 -1 1
> >
> > without the extra process, but our test_seq doesn't understand non-1
> > increments (nor comparisons besides -le). It wouldn't be that hard to
> > teach it, but given that this is the first time we've wanted it, it may
> > not be worth the effort.
> 
> Right.  The original also allows "seq 1000 1", by the way.  Not sure we
> need that either.

I'm not sure what you mean by "original" here. "seq 1000 1" produces no output for me (nor does it work with test_seq).

> But when you say "without the extra process", I think:
I meant without the extra tac/sort process.
Show 10 quoted lines
> test_seq () {
> 	set_step='END {step = first < last ? 1 : -1}'
> 	loop='END {for (; first <= last && step > 0 || first >= last && step < 0; first += step) print first}'
> 	case $# in
> 	1)      awk -v first=1    -v last="$1"    "$set_step $loop" ;;
> 	2)      awk -v first="$1" -v last="$2"    "$set_step $loop" ;;
> 	3)      awk -v first="$1" -v last="$3" -v step="$2" "$loop" ;;
> 	*)      BUG "not 1, 2, or 3 parameters to test_seq" ;;
> 	esac </dev/null
> }

Right, that works. It does introduce an extra awk process per invocation, though I doubt that really matters all that much. The diff I showed in my earlier response works totally in shell, like the current test_seq().

-Peff
Previous: René ScharfeNext: René Scharfe
Message 4 of 7 in “p3400: stop using tac(1)”
  1. p3400: stop using tac(1)René Scharfe, Oct 2, 2021
  2. Jeff KingOct 4, 2021
  3. René ScharfeOct 5, 2021
  4. Jeff KingOct 5, 2021
  5. René ScharfeOct 5, 2021
  6. René ScharfeOct 7, 2021
  7. Junio C HamanoOct 7, 2021

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.