From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Michael Heerdegen Newsgroups: gmane.emacs.bugs Subject: bug#37321: 27.0.50; Excessive gc in a use case (el-search) Date: Sat, 07 Sep 2019 17:30:57 +0200 Message-ID: <87a7bgdsy6.fsf@web.de> References: <87lfv1pm5x.fsf@web.de> <87sgp84235.fsf@web.de> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="181866"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) To: 37321@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Sep 07 17:32:28 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1i6chN-000l9n-Tc for geb-bug-gnu-emacs@m.gmane.org; Sat, 07 Sep 2019 17:32:26 +0200 Original-Received: from localhost ([::1]:35688 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i6chM-0000mO-Hh for geb-bug-gnu-emacs@m.gmane.org; Sat, 07 Sep 2019 11:32:24 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:41311) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i6ch1-0000kp-HV for bug-gnu-emacs@gnu.org; Sat, 07 Sep 2019 11:32:04 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i6ch0-0001ef-GT for bug-gnu-emacs@gnu.org; Sat, 07 Sep 2019 11:32:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:57417) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1i6ch0-0001ea-9M for bug-gnu-emacs@gnu.org; Sat, 07 Sep 2019 11:32:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1i6ch0-0003hy-4o for bug-gnu-emacs@gnu.org; Sat, 07 Sep 2019 11:32:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 07 Sep 2019 15:32:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 37321 X-GNU-PR-Package: emacs Original-Received: via spool by 37321-submit@debbugs.gnu.org id=B37321.156787026614181 (code B ref 37321); Sat, 07 Sep 2019 15:32:02 +0000 Original-Received: (at 37321) by debbugs.gnu.org; 7 Sep 2019 15:31:06 +0000 Original-Received: from localhost ([127.0.0.1]:38005 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1i6cg6-0003ge-8k for submit@debbugs.gnu.org; Sat, 07 Sep 2019 11:31:06 -0400 Original-Received: from mout.web.de ([212.227.15.4]:45609) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1i6cg4-0003g7-8h for 37321@debbugs.gnu.org; Sat, 07 Sep 2019 11:31:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1567870255; bh=OC579g4FigSd+jJ1IwUQu7K7BJKlKSojSA9CiCVE6DU=; h=X-UI-Sender-Class:From:To:Subject:References:Date:In-Reply-To; b=MnQt2p/cTtc89l302tiOGT2nfz5620pAdTdTLmugXvdpsH0AsqtTv+/pqTJjvrVJp XLCNytOSGLaJL05RbEiE/ziOh9jrCqGFVGM7YrslHCbdsJaJLoJKD8J4zlY0MqlLOF dJ9ZCz9xLZDs7c7BIHp53USgDeDykItuh3AyrE6I= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Original-Received: from drachen.dragon ([94.218.186.138]) by smtp.web.de (mrweb003 [213.165.67.108]) with ESMTPSA (Nemesis) id 0M2dgj-1iOpsg34qr-00sRIB; Sat, 07 Sep 2019 17:30:55 +0200 In-Reply-To: <87sgp84235.fsf@web.de> (Michael Heerdegen's message of "Sat, 07 Sep 2019 16:23:42 +0200") X-Provags-ID: V03:K1:NAdMR7vIUrab578nI2D//9hrOvfkS52qlmJkX88llspMRuSnldz kmtoRGzNbIJrhC+CK1zeSm9zmFclFL78kEhWQPMtueex+047+olIipWzbOOVxzHZbsyzhMF fevWUW/0MVRb8hul/NBVgbbbVEIccD18m6F8chu2xYHWb8VCsOiQQR6aEDoMCK5xt86uP5R QnAs+J1L1Fkr6NBqMWHWw== X-UI-Out-Filterresults: notjunk:1;V03:K0:sVFtseSb5tY=:nqNxJKaQuffqOlX0x8dp4G r+rVntJgQrHi2VJ9PitaE3FfptpUoDYtDXomQ9bBYH/FXHls/lHwJsWbXcP2Zr66zGGSQXLqU /UHNpeiPup/jUwh9Qq4HwyCdk735ZyKZJUsM5+RGqQ0L4RCXTZN1Hu/LvCilIuf/hBNshRiNS ODYAq1bYqkCB5wW9ccPHsBa9MawZq2J2FU0ngeTcUK+GKLcm0BXGIcnMV6O6+u1pfZFWejxKe XhshHYFvrxvuTcmyNPIHzOdWUl9CA953h3kNXueW+wcPNrnfEbJBP72NyTgZzq26s4pHYuO2W l4UfHbLnXfMhu91MrcgZw/JNbi/HuVYfOoUc8gs7T/ZgMOlpz5GZOwGiOG01gIROntGPvewi6 mSjQAu/6EsWzmn3Z0agmp2sDbtGBTd3Bph6NK2sq5iKNVFBwcqq8t11iG2SGcQ/0QgXWOhkhD sJ9MZ6RNrEhbkWiXn0yzn4Mgz10O2JahGmIKfEHuscjvbX5vDeYWy+7nE4Xnbjao9ZdaViQtg dF25BTeSSv4JoqIHYFTzB9RFYwrDZFT2KANsbtpY2oW5AqRtdNYm6z/vhAdKLeUVROhEvU7ah K8PhTkgz6kJ2frx6Ba6ysIkOJi/Nu9tK2td0mWzCgdXIWx0tE7f6qsGMz6ECoLeyLzNSRrBdY hyjRDiFr6oby6Uqj3CHkCVWU12WAQ236PAUPC9yhZfCxrJnfWNfA73hTaKh7oflATBbWeI0IE fqzqp6XOii5q7IAo4wNnYbgxFAZCi7v+2i5nA/yCxWiNOUVZQXClSR6tKilJ1kavle9VQgb7 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: 209.51.188.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" Xref: news.gmane.org gmane.emacs.bugs:166273 Archived-At: Michael Heerdegen writes: > #+begin_src emacs-lisp > (defun el-search--flatten-tree (tree) > "Return a list of `el-search--atomic-p' objects in TREE." > (let ((elements ()) > (walked-objects ;to avoid infinite recursion for circular TREEs > (make-hash-table :test #'eq)) > (gc-cons-percentage 0.8) > ) ;Why is binding it here more effective than binding it more top-level? > (cl-labels ((walker (object) > (if (el-search--atomic-p object) > (push object elements) > (unless (gethash object walked-objects) > (puthash object t walked-objects) > (if (consp object) > (progn > (while (consp object) > (walker (car object)) > (setq object (cdr object)) > (if (gethash object walked-objects) > (setq object nil) > (puthash object t walked-objects))) > (when object ;dotted list > (walker object))) > (cl-loop for elt being the elements of object do (walker elt))))))) > (walker tree) > elements))) > #+end_src It doesn't seem to be related to the hash table usage - if I remove the hash table test based infloop check part of the function, the behavior wrt gc doesn't change. So I wonder what in this function does it make so much depend on gc behavior? Michael.