public inbox for linux-man@vger.kernel.org
 help / color / mirror / Atom feed
From: Alejandro Colomar <alx.manpages@gmail.com>
To: Gavin Smith <gavinsmith0123@gmail.com>
Cc: Eli Zaretskii <eliz@gnu.org>,
	"G. Branden Robinson" <g.branden.robinson@gmail.com>,
	dirk@gouders.net, cjwatson@debian.org, linux-man@vger.kernel.org,
	help-texinfo@gnu.org, groff@gnu.org,
	Ingo Schwarze <schwarze@usta.de>
Subject: Re: man page rendering speed (was: Playground pager lsp(1))
Date: Fri, 7 Apr 2023 22:43:33 +0200	[thread overview]
Message-ID: <c37bf6eb-3a40-3911-3852-607e5276abf2@gmail.com> (raw)
In-Reply-To: <ZDBu3WaAFbieenFD@starmint>


[-- Attachment #1.1: Type: text/plain, Size: 2868 bytes --]

Hi Gavin,

On 4/7/23 21:28, Gavin Smith wrote:
> On Fri, Apr 07, 2023 at 09:04:03PM +0200, Alejandro Colomar wrote:
>> $ time man -w gcc | xargs zcat | groff -man -Tutf8 2>/dev/null >/dev/null
>>
>> real	0m0.406s
>> user	0m0.534s
>> sys	0m0.042s
>>
>> But as others said, I don't really care about the time it takes to format
>> the entire document, but rather the first 24 lines, which is more like
>> instantaneous (per your own definition of ~0.5 s).
> 
> Here's a sample comparison of "man" versus "info" on my system
> (relevant as help-texinfo@gnu.org is being copied into this
> discussion):
> 
> $ time info gcc > temp
> 
> real    0m0.112s
> user    0m0.085s
> sys     0m0.017s
> $ ls -l temp
> -rw-rw-r-- 1 g g 3.0M Apr  7 20:14 temp
> $ time man gcc > temp
> troff: <standard input>:11612: warning [p 111, 6.0i]: can't break line
> troff: <standard input>:11660: warning [p 111, 13.8i]: can't break line
> 
> real    0m0.620s
> user    0m1.004s
> sys     0m0.114s
> $ ls -l temp
> -rw-rw-r-- 1 g g 1.2M Apr  7 20:16 temp
> 
> I find the startup of "info" to be instantaneous, whereas man pages often
> have a noticeable delay.

The times you showed are not _startup_ times, but rather the time for
formatting the _entire_ documents.  Remember that less(1) already shows you
the first lines when they are ready, without waiting for the rest of the
pipe.

I've optimized a moment ago the functions I had for listing all the
functions that appear in the Linux man-pages' SYNOPSIS sections, and got it
down from 55 s (calling man(1)) to just 14 s (calling groff(1)) and further
to 4 s (calling mandoc(1)).

That's parsing around a thousand pages, extracting the SYNOPSIS with sed(1),
formatting it, and parsing that to find function prototypes.

I guess that's one of the worst cases of when one would care about the time
it takes to format a man page, and it's a very reasonable one.


> 
> Doubtless man would have more comparable runtimes were cat pages being used.

The startup times don't really change.  It's around 0.5 s.  However, the
time to show the entire page is the same (i.e., virtually all the time is
spent in finding and opening the page)

> 
> Being able to reformat the text for arbitrary widths is of limited use,
> in my opinion, as text becomes more unreadable at long line lengths.

I often want it for the opposite reason: I want to make the terminal
narrower (e.g., for pasting contents into an email, at 72 or 66 columns).

>  I
> suppose cat pages could be provided in a series of sensible widths.  (The
> same is true in theory for Info, but I've never heard of anybody using
> widths for Info output other than the default 72 columns.)

Cheers,
Alex

-- 
<http://www.alejandro-colomar.es/>
GPG key fingerprint: A9348594CE31283A826FBDD8D57633D441E25BB5

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

  reply	other threads:[~2023-04-07 20:43 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-25 20:37 Playground pager lsp(1) Dirk Gouders
2023-03-25 20:47 ` Dirk Gouders
2023-04-04 23:45   ` Alejandro Colomar
2023-04-05  5:35     ` Eli Zaretskii
2023-04-06  1:10       ` Alejandro Colomar
2023-04-06  8:11         ` Eli Zaretskii
2023-04-06  8:48           ` Gavin Smith
2023-04-07 22:01           ` Alejandro Colomar
2023-04-08  7:05             ` Eli Zaretskii
2023-04-08 13:02               ` Accessibility of man pages (was: Playground pager lsp(1)) Alejandro Colomar
2023-04-08 13:42                 ` Eli Zaretskii
2023-04-08 16:06                   ` Alejandro Colomar
2023-04-08 13:47                 ` Colin Watson
2023-04-08 15:42                   ` Alejandro Colomar
2023-04-08 19:48                   ` Accessibility of man pages Dirk Gouders
2023-04-08 20:02                     ` Eli Zaretskii
2023-04-08 20:46                       ` Dirk Gouders
2023-04-08 21:53                         ` Alejandro Colomar
2023-04-08 22:33                           ` Alejandro Colomar
2023-04-09 10:28                       ` Ralph Corderoy
2023-04-08 20:31                     ` Ingo Schwarze
2023-04-08 20:59                       ` Dirk Gouders
2023-04-08 22:39                         ` Ingo Schwarze
2023-04-09  9:50                           ` Dirk Gouders
2023-04-09 10:35                             ` Dirk Gouders
     [not found]                 ` <87a5zhwntt.fsf@ada>
2023-04-09 12:05                   ` Compressed man pages (was: Accessibility of man pages (was: Playground pager lsp(1))) Alejandro Colomar
2023-04-09 12:17                     ` Alejandro Colomar
2023-04-09 18:55                       ` G. Branden Robinson
2023-04-09 12:29                     ` Colin Watson
2023-04-09 13:36                       ` Alejandro Colomar
2023-04-09 13:47                         ` Compressed man pages Ralph Corderoy
2023-04-12  8:13                     ` Compressed man pages (was: Accessibility of man pages (was: Playground pager lsp(1))) Sam James
2023-04-12  8:32                       ` Compressed man pages Ralph Corderoy
2023-04-12 10:35                         ` Mingye Wang
2023-04-12 10:55                           ` Ralph Corderoy
2023-04-12 13:04                       ` Compressed man pages (was: Accessibility of man pages (was: Playground pager lsp(1))) Kerin Millar
2023-04-12 14:24                         ` Alejandro Colomar
2023-04-12 18:52                           ` Mingye Wang
2023-04-12 20:23                             ` Compressed man pages Alejandro Colomar
2023-04-13 10:09                             ` Ralph Corderoy
2023-04-07  2:18         ` Playground pager lsp(1) G. Branden Robinson
2023-04-07  6:36           ` Eli Zaretskii
2023-04-07 11:03             ` Gavin Smith
2023-04-07 14:43             ` man page rendering speed (was: Playground pager lsp(1)) G. Branden Robinson
2023-04-07 15:06               ` Eli Zaretskii
2023-04-07 15:08                 ` Larry McVoy
2023-04-07 17:07                 ` man page rendering speed Ingo Schwarze
2023-04-07 19:04                 ` man page rendering speed (was: Playground pager lsp(1)) Alejandro Colomar
2023-04-07 19:28                   ` Gavin Smith
2023-04-07 20:43                     ` Alejandro Colomar [this message]
2023-04-07 16:08               ` Colin Watson
2023-04-08 11:24               ` Ralph Corderoy
2023-04-07 21:26           ` reformatting man pages at SIGWINCH " Alejandro Colomar
2023-04-07 22:09             ` reformatting man pages at SIGWINCH Dirk Gouders
2023-04-07 22:16               ` Alejandro Colomar
2023-04-10 19:05                 ` Dirk Gouders
2023-04-10 19:57                   ` Alejandro Colomar
2023-04-10 20:24                   ` G. Branden Robinson
2023-04-11  9:20                     ` Ralph Corderoy
2023-04-11  9:39                     ` Dirk Gouders
2023-04-17  6:23                       ` G. Branden Robinson
2023-04-08 11:40               ` Ralph Corderoy
2023-04-05 10:02     ` Playground pager lsp(1) Dirk Gouders
2023-04-05 14:19       ` Arsen Arsenović
2023-04-05 18:01         ` Dirk Gouders
2023-04-05 19:07           ` Eli Zaretskii
2023-04-05 19:56             ` Dirk Gouders
2023-04-05 20:38             ` A less presumptive .info? (was: Re: Playground pager lsp(1)) Arsen Arsenović
2023-04-06  8:14               ` Eli Zaretskii
2023-04-06  8:56                 ` Gavin Smith
2023-04-07 13:14                 ` Arsen Arsenović
2023-04-06  1:31       ` Playground pager lsp(1) Alejandro Colomar
2023-04-06  6:01         ` Dirk Gouders

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=c37bf6eb-3a40-3911-3852-607e5276abf2@gmail.com \
    --to=alx.manpages@gmail.com \
    --cc=cjwatson@debian.org \
    --cc=dirk@gouders.net \
    --cc=eliz@gnu.org \
    --cc=g.branden.robinson@gmail.com \
    --cc=gavinsmith0123@gmail.com \
    --cc=groff@gnu.org \
    --cc=help-texinfo@gnu.org \
    --cc=linux-man@vger.kernel.org \
    --cc=schwarze@usta.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox