aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEli Zaretskii2018-06-30 11:43:42 +0300
committerEli Zaretskii2018-06-30 11:43:42 +0300
commited65ea18152636500399a7b6b75c87bac7d4ef2b (patch)
treefc7fe235cc9866326b5bab8c13255c2ef9ffbf2c /src
parent3b4e65e797e15668345cf606c7d822cce11f17b2 (diff)
downloademacs-ed65ea18152636500399a7b6b75c87bac7d4ef2b.tar.gz
emacs-ed65ea18152636500399a7b6b75c87bac7d4ef2b.zip
Speed up reading sub-process output on MS-Windows
* src/w32proc.c (syms_of_ntproc) <w32-pipe-read-delay>: Set to zero. For the details, see this discussion: http://lists.gnu.org/archive/html/emacs-devel/2018-06/msg00711.html. * src/w32.c (_sys_read_ahead): Update the commentary for w32-pipe-read-delay usage. * doc/emacs/msdos.texi (Windows Processes): Document w32-pipe-read-delay. * etc/NEWS: Mention the change of the value of w32-pipe-read-delay.
Diffstat (limited to 'src')
-rw-r--r--src/w32.c15
-rw-r--r--src/w32proc.c15
2 files changed, 17 insertions, 13 deletions
diff --git a/src/w32.c b/src/w32.c
index e93aaab9ca1..c848b33b2af 100644
--- a/src/w32.c
+++ b/src/w32.c
@@ -8469,13 +8469,14 @@ _sys_read_ahead (int fd)
8469 { 8469 {
8470 rc = _read (fd, &cp->chr, sizeof (char)); 8470 rc = _read (fd, &cp->chr, sizeof (char));
8471 8471
8472 /* Give subprocess time to buffer some more output for us before 8472 /* Optionally give subprocess time to buffer some more output
8473 reporting that input is available; we need this because Windows 95 8473 for us before reporting that input is available; we may need
8474 connects DOS programs to pipes by making the pipe appear to be 8474 this because Windows 9X connects DOS programs to pipes by
8475 the normal console stdout - as a result most DOS programs will 8475 making the pipe appear to be the normal console stdout -- as
8476 write to stdout without buffering, ie. one character at a 8476 a result most DOS programs will write to stdout without
8477 time. Even some W32 programs do this - "dir" in a command 8477 buffering, i.e., one character at a time. Even some W32
8478 shell on NT is very slow if we don't do this. */ 8478 programs do this -- "dir" in a command shell on NT is very
8479 slow if we don't do this. */
8479 if (rc > 0) 8480 if (rc > 0)
8480 { 8481 {
8481 int wait = w32_pipe_read_delay; 8482 int wait = w32_pipe_read_delay;
diff --git a/src/w32proc.c b/src/w32proc.c
index 28d7b6611f6..5934669c363 100644
--- a/src/w32proc.c
+++ b/src/w32proc.c
@@ -3763,14 +3763,17 @@ them blocking when trying to access unmounted drives etc. */);
3763 3763
3764 DEFVAR_INT ("w32-pipe-read-delay", w32_pipe_read_delay, 3764 DEFVAR_INT ("w32-pipe-read-delay", w32_pipe_read_delay,
3765 doc: /* Forced delay before reading subprocess output. 3765 doc: /* Forced delay before reading subprocess output.
3766This is done to improve the buffering of subprocess output, by 3766This may need to be done to improve the buffering of subprocess output,
3767avoiding the inefficiency of frequently reading small amounts of data. 3767by avoiding the inefficiency of frequently reading small amounts of data.
3768Typically needed only with DOS programs on Windows 9X; set to 50 if
3769throughput with such programs is slow.
3768 3770
3769If positive, the value is the number of milliseconds to sleep before 3771If positive, the value is the number of milliseconds to sleep before
3770reading the subprocess output. If negative, the magnitude is the number 3772signaling that output from a subprocess is ready to be read.
3771of time slices to wait (effectively boosting the priority of the child 3773If negative, the value is the number of time slices to wait (effectively
3772process temporarily). A value of zero disables waiting entirely. */); 3774boosting the priority of the child process temporarily).
3773 w32_pipe_read_delay = 50; 3775A value of zero disables waiting entirely. */);
3776 w32_pipe_read_delay = 0;
3774 3777
3775 DEFVAR_INT ("w32-pipe-buffer-size", w32_pipe_buffer_size, 3778 DEFVAR_INT ("w32-pipe-buffer-size", w32_pipe_buffer_size,
3776 doc: /* Size of buffer for pipes created to communicate with subprocesses. 3779 doc: /* Size of buffer for pipes created to communicate with subprocesses.