[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Useless use of shell pipelines [was: Useful use of dd]



Hi,

2 juil. 2021, 23:30 de dpchrist@holgerdanske.com:

> Perhaps the underlying issue is useless use of shell pipelines ("The Unix Way"):
>
> 2021-07-02 12:44:43 dpchrist@dipsy ~/sandbox/perl
> $ cat useless-use-of-grep
> This is the first line: bla bla bla.
> This is line xxxx: bla bla bla.
> This is the last line: bla bla bla.
>
> 2021-07-02 12:45:38 dpchrist@dipsy ~/sandbox/perl
> $ grep xxxx useless-use-of-grep | sed -e 's/bla/foo/'
> This is line xxxx: foo bla bla.
>
>
> Versus "all-in-one":
>
> 2021-07-02 12:45:39 dpchrist@dipsy ~/sandbox/perl
> $ perl -ne 's/bla/foo/ && print if /xxxx/' useless-use-of-grep
> This is line xxxx: foo bla bla.
>
>
> The former is better from a "golfing" standpoint (e.g. fewer characters to type).
>
Here is a better `sed` if you want a all-in-one: 
sed -n /xxxx/{s/bla/foo/p} useless-use-of-grep

> But, it is interesting that the benchmark results defy the common perceptions of "userland tools are are fast" and "Perl is slow":
>
> 2021-07-02 12:59:55 dpchrist@dipsy ~/sandbox/perl
> $ time for n in {1..10000}; do grep xxxx useless-use-of-grep | sed -e 's/bla/foo/' > /dev/null ; done
>
> real	0m42.162s
> user	0m32.925s
> sys	0m45.787s
>
> 2021-07-02 13:00:45 dpchrist@dipsy ~/sandbox/perl
> $ time for n in {1..10000}; do perl -ne 's/bla/foo/ && print if /xxxx/' useless-use-of-grep > /dev/null; done
>
> real	0m23.624s
> user	0m14.308s
> sys	0m10.826s
>
I'm not in front of my Linux terminal, can someone launch the `time` command for my `sed` above please ? :)

Best regards, 
l0f4r0


Reply to: