From: Koichi Murase <myoga.murase@gmail.com>
To: cygwin@cygwin.com
Subject: Question on pseudo console and legacy console
Date: Sat, 08 Feb 2020 14:51:00 -0000 [thread overview]
Message-ID: <CAFLRLk82pJVs7gD9jgywy8164mETupC-Usy22mDr_dt6QSw+iw@mail.gmail.com> (raw)
I have a question on the pseudo console mode and the legacy console
mode.
Question:
Does it cause problems to set `disable_pcon' in the default value of
the environment variable `CYGWIN'? When is the pseudo console mode
recommended, and when can I use the legacy console mode? I noticed
that the terminal emulators with the pseudo console mode is quite
slower than with the legacy console mode, so I am thinking of
setting `disable_pcon' by default if it does not cause problem.
Background:
* There are large performance differences of terminal emulators
between the legacy and pseudo console modes. I show some test and
results in my laptop as follows:
For example, one can measure a performance of the terminal emulators
by the following commands. It measures the processing time of the
terminal for 1M lines.
$ yes | head -1000000 > yes.txt
$ time cat yes.txt
The results with different terminals and different console modes
are summarized below:
urxvt ... legacy: 0.410s, pcon: 33.517s (~ 80x slower)
(A) win ... legacy: 1.593s, pcon: 36.064s (~ 20x slower)
(B) x11 ... legacy: 1.573s, pcon: 35.611s (~ 20x slower)
(C) tty ... legacy: 1.614s, pcon: 35.129s (~ 20x slower)
mintty ... legacy: 3.811s, pcon: 39.406s (~ 10x slower)
xterm -j ... legacy: 39.809s, pcon: 1m2.237s (~ 1.5x slower)
[ Note: `legacy' and `pcon' are the legacy and pseudo console
modes, respectively. (A)--(C) are three different modes of the
terminal that I wrote by myself and also I primarily use daily.
When xterm is tested, the option -j is passed to explicitly turn
off the smooth scrolling mode. ]
This is the results for a specific computer, but the difference
between legacy and pseudo console modes is clear. I think the
reason why pseudo console is so slow is that it actually
internally processes terminal sequences and constructs its
terminal contents in backgrounds, which is completely redundant
process when the user uses terminal emulators. And the background
terminal is as slow as xterm, which is at least ten times slower
than the other terminal emulators.
* I understand that, with the pseudo console mode, the Cygwin console
have more powerful terminal features compared to the legacy console
mode. However, I do not usually use the console but another
terminal emulator. Also the default Cygwin Terminal (which can be
launched from the shortcut icon on desktop or in the start menu) is
actually Mintty, so I believe most other people also use terminal
emulators.
Is there any reason to enable the pseudo console mode for all the
programs including those which does not use the console window? For
example, does the Cygwin PTY with the legacy console mode have some
limitation which is not present with the pseudo console mode? Or,
are there some problems caused by the legacy console mode? I
thought maybe some Windows Command-Line application (based on
Windows Console API) could have troubles with the legacy console
mode, but with a quick check for `cmd' and `PowerShell' it appears
to work in the terminal emulators with the legacy console mode
though I haven't tested it thoroughly.
* For these reasons, if there is no functional differences between the
pseudo console mode and the legacy console mode as far as I use
terminal emulators, I tend to think about setting `disable_pcon' as
the default value of the environment variable `CYGWIN'. But looking
at the discussion at
https://cygwin.com/ml/cygwin-patches/2020-q1/threads.html#00060
it appears the setting `disable_pcon' is only introduced as a
workaround for the programs incompatible with the pseudo console
mode (such as `cgdb'), and the pseudo console mode is still
considered to be appropriate for normal programs.
* If the console mode would not cause any differences when there is no
visible console window, would it make sense to change Cygwin's
behavior so that it switches to the pseudo console mode only when
the console window is present (if it is not too difficult
technically)?
Best regards,
Koichi
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
next reply other threads:[~2020-02-08 14:51 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-08 14:51 Koichi Murase [this message]
2020-02-08 23:43 ` Takashi Yano
2020-02-09 3:20 ` Koichi Murase
2020-02-11 7:22 ` Thomas Wolff
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=CAFLRLk82pJVs7gD9jgywy8164mETupC-Usy22mDr_dt6QSw+iw@mail.gmail.com \
--to=myoga.murase@gmail.com \
--cc=cygwin@cygwin.com \
/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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).