From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Tianxiang Xiong Newsgroups: gmane.emacs.devel Subject: Re: Performance issue w/ `cl-loop`s `collect...into` Date: Sun, 8 Apr 2018 01:50:16 -0700 Message-ID: References: <41631665-6cd6-7096-8866-5ab9559a14ef@gmail.com> <1d5b85f5-62cd-f2f3-0b71-9e2a2cf2ef9e@gmail.com> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="089e0825ac9ce0471d0569526043" X-Trace: blaine.gmane.org 1523177334 982 195.159.176.226 (8 Apr 2018 08:48:54 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sun, 8 Apr 2018 08:48:54 +0000 (UTC) Cc: Emacs developers To: =?UTF-8?Q?Cl=C3=A9ment_Pit=2DClaudel?= Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Apr 08 10:48:50 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 1f560H-00008q-Ry for ged-emacs-devel@m.gmane.org; Sun, 08 Apr 2018 10:48:50 +0200 Original-Received: from localhost ([::1]:36987 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f562N-0004gY-Cr for ged-emacs-devel@m.gmane.org; Sun, 08 Apr 2018 04:50:59 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:48877) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f561j-0004en-Vm for emacs-devel@gnu.org; Sun, 08 Apr 2018 04:50:21 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f561i-0001BV-TT for emacs-devel@gnu.org; Sun, 08 Apr 2018 04:50:19 -0400 Original-Received: from mail-wm0-x22b.google.com ([2a00:1450:400c:c09::22b]:38773) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1f561i-00019Z-LC for emacs-devel@gnu.org; Sun, 08 Apr 2018 04:50:18 -0400 Original-Received: by mail-wm0-x22b.google.com with SMTP id i3so9950925wmf.3 for ; Sun, 08 Apr 2018 01:50:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=tudmlvJLbxSiS4y5tXcPYZkQ4f+2vtTJ1nXSK0zHDVA=; b=T+CEp0rvnENSgpSJ5FzNhBPZDUkc4UaC7QbCZSNC0c3sC1KKJ80pEOuwreNQZ3brPm lngU+TUBxdJtbEC6HzmSrEQw9VEAgbwaQzSDePI/rJOmmK/Alb+J16NAvU5e1xeqtTXu 78j5QOXg4HRNJtQPHSQiZWpYNDSxvwUpRXLZQAKQM3cYjsADq8jGAOKMCYszZIM7Mo9s H33L3tQZxAFFhK89osXqj4bN5ZtLQ9RZcup+oD7fqbrQ5HF1OUsU8fC/6UEiL0WRe6fV OSzxNUcxFh6h9dHCGUhDHfz96+5t9Etq89uAMbOcZAJAMLbsaRXjao1rurUH61XDZPfF 5dew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=tudmlvJLbxSiS4y5tXcPYZkQ4f+2vtTJ1nXSK0zHDVA=; b=geYcwgOnM7KUGlpfVbWvCnmYsz/eZR/eJwH9d9sVInJRtQQx3XQIv0bARfFX4IScAW xTjR7cGsnDZG5uZpXww6nzyVAbPXmsFVYPd0QozrEfGXUUIVOeIugiGxXaSm8qNxV5T0 HNiQBBwVcp6LseoKLWCDrje8/AQO+wJwB3BsQF2sCEZXoCEQobB2HLUHfYHbgKW+Rgpa d78lz7DlEhMXpGJUf1tzuFzstH7NHT9ytWymgwlDZQFNtJgpkDrD7/HhQpo7c3fGy44j 6uhx8Sj76Ff94koYmw7S+tqp4nS2fZCPuKQNDU/Y550gbG2ERbR4GYDoon8B+3lCs9gx gzkA== X-Gm-Message-State: ALQs6tDzk7G6YaWo2UsTvX04sX4hOvTKH5LMob6T/iciz2eCrKadscry 8MqbJTd3fx9ZQkd9f/5kE8V6eM+hDBl6jHbg47E= X-Google-Smtp-Source: AIpwx49CASWYtH5Y2sNVReuU+Jn1i+tJJHZR8kdWbYEEyI/d5QiEvFrcRr3kU2TQ3EuNvJxv++EZYNyn3W4GihiGrcs= X-Received: by 10.80.243.140 with SMTP id g12mr16433210edm.88.1523177417097; Sun, 08 Apr 2018 01:50:17 -0700 (PDT) Original-Received: by 10.80.203.195 with HTTP; Sun, 8 Apr 2018 01:50:16 -0700 (PDT) In-Reply-To: <1d5b85f5-62cd-f2f3-0b71-9e2a2cf2ef9e@gmail.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::22b 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:224427 Archived-At: --089e0825ac9ce0471d0569526043 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Indeed, I modified the macroexpanded form into: (cl-block nil (let* ((--cl-var-- (number-sequence 0 130000)) i pairs pairs-end) (while (consp --cl-var--) (setq i (car --cl-var--)) (let ((v (list (cons (number-to-string i) i)))) (if (null pairs-end) (setq pairs v pairs-end (last pairs)) (setq pairs-end (setcdr pairs-end v)))) (setq --cl-var-- (cdr --cl-var--))) (length pairs))) and it runs near instantaneously. I'd *guess* the fix would be applied in `cl--parse-loop-clause`? Perhaps Stefan could give some pointers? On Sat, Apr 7, 2018 at 11:12 PM, Cl=C3=A9ment Pit-Claudel wrote: > On 2018-04-08 01:56, Tianxiang Xiong wrote: > > Yikes--wasn't expecting that. Similar code in SBCL runs nearly > instantaneously. > > Indeed, fixing the implementation would be nice. It shouldn't be too har= d > to keep a reference to the last `cons' of `pairs' and to append to that > using setcdr. > > Cl=C3=A9ment. > --089e0825ac9ce0471d0569526043 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Indeed, I modified the macroexpanded form into:

(cl-block nil
=C2=A0 (let* ((--cl-var-- (number-sequence 0 130000))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0i
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0pairs
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0pairs-end)
=C2=A0 =C2=A0 (while (consp --cl-var--)
=C2=A0 =C2=A0 =C2=A0 (setq i (c= ar --cl-var--))
=C2=A0= =C2=A0 =C2=A0 (let ((v (list (cons (number-to-string i) i))))
=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (if (n= ull pairs-end)
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq pairs v pairs-end (last pairs))
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 (setq pairs-end (setcdr pairs-end v))))
=C2=A0 =C2=A0 =C2=A0 (setq --cl-var-- (cdr --c= l-var--)))
=C2=A0 =C2= =A0 (length pairs)))

and it runs near= instantaneously.

I'd guess=C2=A0the fi= x would be applied in `cl--parse-loop-clause`? Perhaps Stefan could give so= me pointers?


On Sat, Apr 7, 2018 at 11:12 PM, Cl=C3=A9ment Pit-Cla= udel <cpitclaudel@gmail.com> wrote:
On 2018-04-08 01:56, Tianxiang Xiong wrote:=
> Yikes--wasn't expecting that. Similar code in SBCL runs nearly ins= tantaneously.

Indeed, fixing the implementation would be nice.=C2=A0 It shouldn= 9;t be too hard to keep a reference to the last `cons' of `pairs' a= nd to append to that using setcdr.

Cl=C3=A9ment.

--089e0825ac9ce0471d0569526043--