From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: =?UTF-8?Q?Cl=c3=a9ment_Pit-Claudel?= Newsgroups: gmane.emacs.devel Subject: Re: Performance issue w/ `cl-loop`s `collect...into` Date: Sat, 7 Apr 2018 23:26:00 -0400 Message-ID: <41631665-6cd6-7096-8866-5ab9559a14ef@gmail.com> References: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: blaine.gmane.org 1523157846 4661 195.159.176.226 (8 Apr 2018 03:24:06 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sun, 8 Apr 2018 03:24:06 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Apr 08 05:24:02 2018 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f50vy-00018P-Cr for ged-emacs-devel@m.gmane.org; Sun, 08 Apr 2018 05:24:02 +0200 Original-Received: from localhost ([::1]:46055 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f50y3-0001TX-Oe for ged-emacs-devel@m.gmane.org; Sat, 07 Apr 2018 23:26:11 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:35091) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f50xw-0001TB-4h for emacs-devel@gnu.org; Sat, 07 Apr 2018 23:26:05 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f50xu-0005G3-2d for emacs-devel@gnu.org; Sat, 07 Apr 2018 23:26:04 -0400 Original-Received: from mail-qt0-x232.google.com ([2607:f8b0:400d:c0d::232]:43760) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1f50xt-0005FT-Tg for emacs-devel@gnu.org; Sat, 07 Apr 2018 23:26:01 -0400 Original-Received: by mail-qt0-x232.google.com with SMTP id s48so5534987qtb.10 for ; Sat, 07 Apr 2018 20:26:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-language:content-transfer-encoding; bh=R755yVpbYmyaXbWC2MWyjyvq0RYOXXUUBQffIE1CKGY=; b=Q18TDuyy3HYGxLzGx9ijcQHkKWutCokNxDslZ9VB55vWQui6WBu1HsmHDB/v6a19UP L3Mb0o/6zx1h1vUPzBArNZGqj6UQORghroFBUzgv4deKcA7PmZDpHGUtFey+anNeHT/q 5u7wgSDK/YVpKpNQaoqYcc9kNofrbP0RFW6Ov0GBxCiICKhpSmQ7jMNu9IVKpwGXcWMI WzxJxPOpcvcfJpGlU6yfj4A+UuRSU5SvaAUpUZXDkWtRLcxBQCVPXiSNkMo98hWN+7yf H/Hu1nZG/AD6Z5l/tmsrcKwdd9Cxp0Yi+o/+Aqap4k9t31bQ0FXy3GZA2smw0g+be6bf 1izg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=R755yVpbYmyaXbWC2MWyjyvq0RYOXXUUBQffIE1CKGY=; b=W194IgVtL/KFetYMJtXki3Y3g8v7HWlAxedRcfCCnprAum4nFXq1JmPo7euCNTKV4w OKL1tCdFBWN7LM9LlWVckQHKBdxY1FTxJqpZ4OUdhjmWCnjRq1q9m3XQDcRlypZ3j41q 2g1H/E23jTqBbLUVwL0GBHGaTFciEeYx8KmB/ghtV+aplLnJ2C4Pppzbf8C59oilK9tr YDah5I4x46Yq9VzuoLXhxQVm1u6YPW9NJD5Rdys3P0PEmk+ImXZuHg11Zf50b+vvsFg8 uiSX3+Vdp0JYSdNFKIaW/xAphVu3Eq9qLwCeEJjtHzqsmN5bY4TzNObFI2Entm3n49z3 MGZg== X-Gm-Message-State: ALQs6tBCkWf+EyEkFU2qs+/jN6y6MRfizQSLeKOI2lEww+XNaxLqLEhR tqj9eqx9M2IejdltjIZSVNX06pbv X-Google-Smtp-Source: AIpwx4/xESitWTM1iXTsNG44kJEvHTQtdE4FD97KVRijCDfeHBGo2HOIcLB1udATackRLIqWSuQYOg== X-Received: by 10.200.24.248 with SMTP id o53mr45208875qtk.79.1523157961148; Sat, 07 Apr 2018 20:26:01 -0700 (PDT) Original-Received: from ?IPv6:2601:184:4180:66e7:40ba:6f4c:6a2a:bd80? ([2601:184:4180:66e7:40ba:6f4c:6a2a:bd80]) by smtp.gmail.com with ESMTPSA id n58sm12098798qta.34.2018.04.07.20.26.00 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 07 Apr 2018 20:26:00 -0700 (PDT) In-Reply-To: Content-Language: en-GB X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::232 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:224424 Archived-At: On 2018-04-07 20:51, Tianxiang Xiong wrote: > The following runs nearly instantaneously: > > (progn > (cl-loop for i in (number-sequence 0 130000) > collect (cons (number-to-string i) i)) > :done) This expands to the following: (progn (cl-block nil (let* ((#:--cl-var-- (number-sequence 0 130000)) (i nil) (#:--cl-var-- nil)) (while (consp #:--cl-var--) (setq i (car #:--cl-var--)) (setq #:--cl-var-- (cons (cons (number-to-string i) i) #:--cl-var--)) (setq #:--cl-var-- (cdr #:--cl-var--))) (nreverse #:--cl-var--))) :done) > This seems to take a long time (didn't wait for it to finish): > > (progn > (cl-loop for i in (number-sequence 0 130000) > collect (cons (number-to-string i) i) into pairs) > :done) Whereas that expands to this: (progn (cl-block nil (let* ((#:--cl-var-- (number-sequence 0 130000)) (i nil) (pairs nil)) (while (consp #:--cl-var--) (setq i (car #:--cl-var--)) (setq pairs (nconc pairs (list (cons (number-to-string i) i)))) (setq #:--cl-var-- (cdr #:--cl-var--))) nil)) :done) > Is this a known issue? I couldn't find anything in the bug tracker about it. The second form is quadratic, maybe because user code is allowed to access the accumulation variable during iteration? It should likely be documented, but it doesn't seem to be ATM. Clément.