From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25226 invoked by alias); 19 Jun 2017 12:24:24 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: X-Seq: 22735 Received: (qmail 21442 invoked from network); 19 Jun 2017 12:24:24 -0000 X-Qmail-Scanner-Diagnostics: from mail-wr0-f174.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(209.85.128.174):SA:0(-0.7/5.0):. Processed in 0.857336 secs); 19 Jun 2017 12:24:24 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.1 X-Envelope-From: stephane.chazelas@gmail.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: pass (ns1.primenet.com.au: SPF record at _netblocks.google.com designates 209.85.128.174 as permitted sender) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:mail-followup-to:references :mime-version:content-disposition:in-reply-to:user-agent; bh=g9o8DKNZ4LAK7UAZfbMNodwpxTGOB4hbz8iCrfOgK1o=; b=taYM6FS3S3hQxhaFf5G2Krm8aCLO8HzPeKgC8MeuESPcJMJYkWJfxVGV6u/c93RDZK eKCRip4wS/F9sZxKZi3celOBHrtoKzzsRNZOQpbf3VJwAsN/47zTqRDqPKq5bnZoWND2 sqm/e4JPJJVG5y7mRLYinlcWPvqWKng+HJw4KgN68UAjllJPHeEaF906fKfwN/EhKscP jGwf37NvV8Xbi5jox+QArX/2rE4EkjrIyLxTWN56hwzVV5J90orP0WCQeSv9yikmDbIq ZqeB+0bA8wpiZ91YKZxpOdxqvVnjmkC+o2tvwB9+Uq1oPR+10NKP+DHM72Gt3NUQ4+eG s3sA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id :mail-followup-to:references:mime-version:content-disposition :in-reply-to:user-agent; bh=g9o8DKNZ4LAK7UAZfbMNodwpxTGOB4hbz8iCrfOgK1o=; b=p+DFruAIxEalv7kzuQcgUUxscYEKrJ2hj0JfJLRvBO7FNNynDMqcn4AGqwB63mPUpF mcEXNn+YcvNx2iOLvkH7E2J5u3bK7PTJpuiwxGRTFjm25XCAUiBu9Yqp2VRBZI99G1ZT ATYSCPI8u9F/2cQZ6Vel6mkFlWzqa9wBctCARMNAvW5zaGyH3YyIUKut51fHbn01XLjr fu6uq+jUOurrb/fwcB1v6TsnbCLiaX0SwfDrXhovu9/rPYfkXXZHkqE6H1r99QiuIBRp 4Fr883TOCmqZTKbBXuq66qa17mxssyr0WNuzu5o8/L0EuNRf81k4gntIvA4dNhV7fngL oiFQ== X-Gm-Message-State: AKS2vOwfS8lUoeZ+C/73YtPtvszQIXaSeeKkwvIr3nSzkAGPVvTLjMLF NgSJlskr/BSMug== X-Received: by 10.28.136.196 with SMTP id k187mr16028685wmd.103.1497875055764; Mon, 19 Jun 2017 05:24:15 -0700 (PDT) Date: Mon, 19 Jun 2017 13:24:13 +0100 From: Stephane Chazelas To: Sebastian Gniazdowski Cc: zsh-users@zsh.org Subject: Re: Why sourcing a file is not faster than doing a loop with eval, zle -N Message-ID: <20170619122413.GA9294@chaz.gmail.com> Mail-Followup-To: Sebastian Gniazdowski , zsh-users@zsh.org References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) Note: $ time zsh -c 'repeat 100 . ./fsh_cache' [...] ./fsh_cache:zle:269: invalid widget `.menu-select' ./fsh_cache:zle:269: invalid widget `.menu-select' zsh -c 'repeat 100 . ../hacking-private/FSH/fsh_cache' 1.13s user 0.98s system 99% cpu 2.109 total A lot of "system" time. $ wc ./fsh_cache 554 2964 58524 ./fsh_cache $ strace -c zsh -c '. ./fsh_cache' % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 100.00 0.000996 0 60022 rt_sigprocmask 60022 calls to rt_sigprocmask sounds a bit much. They seem to be all on #0 0x00007ffff730d730 in __sigprocmask (how=1, set=0x7fffffffb1c0, oset=0x7fffffffb120) at ../sysdeps/unix/sysv/linux/x86_64/sigprocmask.c:36 #1 0x000000000049b2c0 in signal_unblock (set=...) at signals.c:274 #2 0x00000000004580ac in shingetline () at input.c:148 #3 0x000000000045899b in inputline () at input.c:278 #4 0x000000000045882a in ingetc () at input.c:226 #5 0x000000000046211e in gettok () at lex.c:611 #6 0x000000000046183b in zshlex () at lex.c:275 #7 0x0000000000484825 in parse_event (endtok=37) at parse.c:569 #8 0x0000000000453f6e in loop (toplevel=0, justonce=0) at init.c:146 #9 0x0000000000456db0 in source (s=0x708930 "../hacking-private/FSH/fsh_cache") at init.c:1386 #10 0x0000000000425a0e in bin_dot (name=0x7ffff7ff2550 ".", argv=0x7ffff7ff25b0, ops=0x7fffffffd980, func=0) at builtin.c:5699 #11 0x00000000004105ff in execbuiltin (args=0x7ffff7ff2580, assigns=0x0, bn=0x6dc7c0 ) at builtin.c:485 #12 0x0000000000437fd4 in execcmd_exec (state=0x7fffffffe300, eparams=0x7fffffffdef0, input=0, output=0, how=18, last1=1) at exec.c:3958 #13 0x0000000000431a50 in execpline2 (state=0x7fffffffe300, pcode=131, how=18, input=0, output=0, last1=1) at exec.c:1873 #14 0x0000000000430665 in execpline (state=0x7fffffffe300, slcode=4098, how=18, last1=1) at exec.c:1602 #15 0x000000000042f95a in execlist (state=0x7fffffffe300, dont_change_job=0, exiting=1) at exec.c:1360 #16 0x000000000042efd4 in execode (p=0x7ffff7ff2488, dont_change_job=0, exiting=1, context=0x4c37a2 "cmdarg") at exec.c:1141 #17 0x000000000042ee9c in execstring (s=0x7fffffffe772 ". ../hacking-private/FSH/fsh_cache", dont_change_job=0, exiting=1, context=0x4c37a2 "cmdarg") at exec.c:1107 #18 0x0000000000456a61 in init_misc (cmd=0x7fffffffe772 ". ../hacking-private/FSH/fsh_cache", zsh_name=0x7fffffffe76a "zsh") at init.c:1292 #19 0x0000000000457e8e in zsh_main (argc=3, argv=0x7fffffffe4f8) at init.c:1678 #20 0x000000000040f7f6 in main (argc=3, argv=0x7fffffffe4f8) at ./main.c:93 Which probably explains why one gets about as many rt_sigprocmask calls as there are bytes in the file. $ time zsh -c 'repeat 100 eval "$(