HomeFreeBSD

sh: Don't allocate a redirtab if there are no redirections.

Description

sh: Don't allocate a redirtab if there are no redirections.

Builtins (including variable assignments without command word), function
calls and redirected compound commands need to restore file descriptors
to their original state after execution. This is handled by allocating a
redirtab structure. These mallocs and frees show up heavily in pmcstat.

Only allocate a redirtab if there are actually redirections and maintain a
count of how many levels of REDIR_PUSH there are without redirtabs.

A simple loop without external programs like

sh -c 'i=0; w=$(printf %0100d 7); while [ "$i" -lt 1000000 ]; do

i=$((i+1)); done'

is over 25% faster on an amd64 bhyve VM.

Details

Provenance
jillesAuthored on
Parents
rS295084: Welcome Anish Gupta (anish) as a new src committer. Anish added
Branches
Unknown
Tags
Unknown