From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.bugs Subject: bug#18522: 24.4.50; mapcar is very slow Date: Wed, 24 Feb 2016 22:26:15 +0200 Message-ID: <8337shhn2w.fsf@gnu.org> References: <8738bkdjqg.fsf@micropit.roche-blanche.homenet.org> <87h9h2xr9k.fsf@roche-blanche.net> <56C99AD0.2000309@gmx.at> <87wppywbaz.fsf@roche-blanche.net> <87d1rquo4a.fsf@roche-blanche.net> <878u2eun9o.fsf@roche-blanche.net> <834md2niqt.fsf@gnu.org> <87k2lyszy2.fsf@roche-blanche.net> <83bn79n66p.fsf@gnu.org> <87vb5hry9y.fsf@roche-blanche.net> <83r3g4lnor.fsf@gnu.org> <87r3g4o4uw.fsf@roche-blanche.net> <83h9h0jwfo.fsf@gnu.org> <87mvqru119.fsf@roche-blanche.net> <8360xfjsyr.fsf@gnu.org> <878u2bs7tl.fsf@roche-blanche.net> <83r3g3iajr.fsf@gnu.org> <87twkypfqx.fsf@roche-blanche.net> <83vb5egg8y.fsf@gnu.org> <87fuwikmzc.fsf@roche-blanche.net> <83io1ege6r.fsf@gnu.org> <87y4a9kh9e.fsf@roche-blanche.net> Reply-To: Eli Zaretskii NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: ger.gmane.org 1456345647 6277 80.91.229.3 (24 Feb 2016 20:27:27 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 24 Feb 2016 20:27:27 +0000 (UTC) Cc: larsi@gnus.org, 18522@debbugs.gnu.org To: Peter =?UTF-8?Q?M=C3=BCnster?= Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Feb 24 21:27:16 2016 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1aYg1k-0001cc-HN for geb-bug-gnu-emacs@m.gmane.org; Wed, 24 Feb 2016 21:27:16 +0100 Original-Received: from localhost ([::1]:38179 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aYg1g-0007Lz-AP for geb-bug-gnu-emacs@m.gmane.org; Wed, 24 Feb 2016 15:27:12 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:38629) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aYg1a-0007Hv-Fp for bug-gnu-emacs@gnu.org; Wed, 24 Feb 2016 15:27:08 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aYg1W-00036I-Nv for bug-gnu-emacs@gnu.org; Wed, 24 Feb 2016 15:27:06 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:47131) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aYg1W-00035u-DO for bug-gnu-emacs@gnu.org; Wed, 24 Feb 2016 15:27:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84) (envelope-from ) id 1aYg1W-00013n-6s; Wed, 24 Feb 2016 15:27:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org, bugs@gnus.org Resent-Date: Wed, 24 Feb 2016 20:27:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 18522 X-GNU-PR-Package: emacs,gnus X-GNU-PR-Keywords: Original-Received: via spool by 18522-submit@debbugs.gnu.org id=B18522.14563455934038 (code B ref 18522); Wed, 24 Feb 2016 20:27:02 +0000 Original-Received: (at 18522) by debbugs.gnu.org; 24 Feb 2016 20:26:33 +0000 Original-Received: from localhost ([127.0.0.1]:44257 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84) (envelope-from ) id 1aYg12-000134-Qa for submit@debbugs.gnu.org; Wed, 24 Feb 2016 15:26:33 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:47386) by debbugs.gnu.org with esmtp (Exim 4.84) (envelope-from ) id 1aYg0y-00012p-H7 for 18522@debbugs.gnu.org; Wed, 24 Feb 2016 15:26:31 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aYg0p-0002de-KA for 18522@debbugs.gnu.org; Wed, 24 Feb 2016 15:26:23 -0500 Original-Received: from fencepost.gnu.org ([2001:4830:134:3::e]:50604) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aYg0p-0002dS-GR; Wed, 24 Feb 2016 15:26:19 -0500 Original-Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:3971 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.82) (envelope-from ) id 1aYg0n-0002T9-IQ; Wed, 24 Feb 2016 15:26:18 -0500 In-reply-to: <87y4a9kh9e.fsf@roche-blanche.net> (message from Peter =?UTF-8?Q?M=C3=BCnster?= on Wed, 24 Feb 2016 21:03:41 +0100) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:113748 Archived-At: > From: Peter Münster > Cc: rudalics@gmx.at, larsi@gnus.org, 18522@debbugs.gnu.org > Date: Wed, 24 Feb 2016 21:03:41 +0100 > > --8<---------------cut here---------------start------------->8--- > │ /* If this variable is not always local in all buffers, > │ set it in the buffers that don't nominally have a local value. */ > │ if (idx > 0) > │ ↑ jle 95 > │ { > │ struct buffer *b; > │ int i = 0; > │ FOR_EACH_BUFFER (b) > 0.08 │ mov all_buffers,%rcx > │ test %rcx,%rcx > │ ↓ je 180 > │ { > │ i++; > │ if (!PER_BUFFER_VALUE_P (b, idx)) > 0.02 │ cmp last_per_buffer_idx,%edx > │ ↓ jge 160 > │ { > │ struct buffer *b; > │ int i = 0; > │ FOR_EACH_BUFFER (b) > │ { > │ i++; > │ mov $0x1,%edx > 0.02 │ ↓ jmp f3 > │ nop > 15.24 │ f0: add $0x1,%edx > │ if (!PER_BUFFER_VALUE_P (b, idx)) > 14.02 │ f3: cmpb $0x0,0x320(%rcx,%rax,1) > 10.65 │ ↓ jne 101 > │ set_per_buffer_value(): > │ } > │ > │ INLINE void > │ set_per_buffer_value (struct buffer *b, int offset, Lisp_Object value) > │ { > │ *(Lisp_Object *)(offset + (char *) b) = value; > 14.11 │ mov %rbp,(%rcx,%rsi,1) > │ Fset_default(): > │ set it in the buffers that don't nominally have a local value. */ > │ if (idx > 0) > │ { > │ struct buffer *b; > │ int i = 0; > │ FOR_EACH_BUFFER (b) > 14.36 │101: mov 0x2d8(%rcx),%rcx > 21.80 │ test %rcx,%rcx > 5.16 │ ↑ jne f0 > │ { > │ i++; > │ if (!PER_BUFFER_VALUE_P (b, idx)) > │ set_per_buffer_value (b, offset, value); > │ } > │ fprintf(stderr, "XXXXX: %d\n", i); > 0.00 │10d: mov stderr@@GLIBC_2.2.5,%rdi > 2.18 │ mov $0x5e90e5,%esi > │ xor %eax,%eax > │ → callq fprintf@plt > │ ↑ jmpq 95 > │ nop > --8<---------------cut here---------------end--------------->8--- Most of the time is spent in the loop over the buffers. So I guess avoiding binding case-fold-search in parse-time-string should make the problem go away?