From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: LdBeth Newsgroups: gmane.emacs.devel Subject: Re: funcall consing Date: Fri, 31 Dec 2021 22:27:00 +0800 Message-ID: References: <87ee5tm422.fsf@logand.com> Mime-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=US-ASCII Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="18331"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (=?ISO-8859-4?Q?Goj=F2?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/27.2 (x86_64-apple-darwin18.7.0) MULE/6.0 (HANACHIRUSATO) Cc: emacs-devel@gnu.org To: Tomas Hlavaty Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Dec 31 15:28:19 2021 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n3ItG-0004WG-C4 for ged-emacs-devel@m.gmane-mx.org; Fri, 31 Dec 2021 15:28:18 +0100 Original-Received: from localhost ([::1]:34678 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1n3ItF-0004Tp-6o for ged-emacs-devel@m.gmane-mx.org; Fri, 31 Dec 2021 09:28:17 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:50922) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n3IsO-0003kp-Lp for emacs-devel@gnu.org; Fri, 31 Dec 2021 09:27:26 -0500 Original-Received: from out203-205-221-155.mail.qq.com ([203.205.221.155]:41164) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n3IsD-0001xV-Dl for emacs-devel@gnu.org; Fri, 31 Dec 2021 09:27:18 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1640960825; bh=qjAcP5p7TV7ACXNI24pG4VKR1TduxZdtuqFxCvAaZlY=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=rkbzVgHcoo1T2cDLgbARFvjYbg334+DcgS+GZ6k+BdAX1NXyfKThPKTiih7HIZnHo AoGurU6mP+d+J0ienIMNCrmfg+hYc79+qf6sgmG0pxhoEJxjnrR5BWF9dfGHioin2a dnUWHrchZaizIdG9Ps/hxOOdPaXPjgPhKHeMwleo= Original-Received: from Costume-Party.local ([125.111.88.153]) by newxmesmtplogicsvrszc9.qq.com (NewEsmtp) with SMTP id 6C3B0CC9; Fri, 31 Dec 2021 22:27:03 +0800 X-QQ-mid: xmsmtpt1640960823tryqmkz3n X-QQ-XMAILINFO: NM+HyBNiu6fqVtT5dKFch5eAvui63fsA26OKANb1CMFcUsQLKys3saqzlQOlLe zc+wHi7Ui4l3aiZ4dF7wm2b6I8UJX2th0jXiD059Suf7Y20APVgrcax6pdxtDfRUTZCIaQKleBSA qwKsGT8rlaD5OSzA3rBP1GDl3PRSnf7xXND5mfoEyBzU/m+ngllwa/kBAjAciwPJAUA02qAOosi4 GTf0myrHPVPKhK/1Dns2+qlLZE+8EJ1taUJvODND5P4zW2K9caNH7tVfR/0+gDcXUhJYDsF8Loa6 R8V21B/29oj470zUteVGby88kiD0J3vdgtdnc3JrN+BGOZlWMGp0sAMHuH9jllTe3B+36Ok2GRox OXiR2uONyV5YXhiZ3lCdJDMMJQfhaINcBGtTkeGEi2vs452DILZa3OYLMnLPydNO7eCY1RmLIEnH LqaxZEM9uDHtCbWWzc4bciS4WeWCPwxWiJSc5B61T81Ue8LfqIYRAvifWQNg4tR4j67MUuPYvO1j WlP5b1Vor97C3sKOoDpJh41RoDl8NhdrsbzPCwu9vViURQYChCUrnaMOsJL+eG5cALDP3QJkb67L AbLJxjVKlQ7WcTIvdF3ZB31U7X/TifRYyxZG3fXwO/R0NLmjn0waiTIt49PBVcOLZCyGUStllzJg wPLU2vWs2QyeLBOWVf2CCxY4+gGjTtQCZnVDFEVsklNU+Oa9+/7uVcxmR7TPtDiOPUjoeWB1NyxP Mer/bV5PWywjwwBAJRtPOANyRKcy0bHd7ymyXXAHwuL4XAaS5oPFse8NoYcZBPicC50r1vHjZm3J JTK3mtAiiNYTMY7L4ffiYMLy5QX1/n7wE= Original-Received: by Costume-Party.local (Postfix, from userid 501) id 6CBD1203D658A5; Fri, 31 Dec 2021 22:27:00 +0800 (CST) X-OQ-MSGID: In-Reply-To: <87ee5tm422.fsf@logand.com> X-Face: %[!P\u/BKFRGn_9h9|yO"ho?C0ej^LmM}WMb-`Jfj8OsS^^AKmHYGlD@^|7SEA3UzOGPFbB"OFczY?'\JtJ\lR'@&Y5j; s8{$&|3D>^i.U4l2h?1qpD.+{[$~j]vBeHZf^|BGyL8{/`4 X-Attribution: ldb Received-SPF: pass client-ip=203.205.221.155; envelope-from=andpuke@foxmail.com; helo=out203-205-221-155.mail.qq.com X-Spam_score_int: 27 X-Spam_score: 2.7 X-Spam_bar: ++ X-Spam_report: (2.7 / 5.0 requ) DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HELO_DYNAMIC_IPADDR=1.951, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_DYNAMIC=0.982, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 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-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:283743 Archived-At: >>>>> In <87ee5tm422.fsf@logand.com> >>>>> Tomas Hlavaty wrote: Tomas> Hi, Tomas> in order to optimize some elisp code, I am trying to understand where my Tomas> consing comes from. So far it looks like that my assumption about the Tomas> cause of consing are wrong and that the cause of consing is funcall. Is Tomas> that plausible? I am seeing similar results like this (lexical-binding, Tomas> also byte compiled): Tomas> (benchmark-run 10 (dotimes (i 100000) (1+ i))) Tomas> ;;(2.720941123 40 1.7525918699999998) Tomas> (let ((x (lambda (i) (1+ i)))) (benchmark-run 10 (dotimes (i 100000) (funcall x i)))) Tomas> ;;(4.9373091140000005 80 3.4835688719999958) Tomas> i.e. funcall conses a lot and introduces cca double performance penalty. Tomas> Is that right or am I doing something wrong? Tomas> Would it be possible to improve that? Try this: ``` (defun bar () (benchmark-run 10 (dotimes (i 100000) (1+ i)))) (defun foo () (let ((x (lambda (i) (1+ i)))) (benchmark-run 10 (dotimes (i 100000) (funcall x i))))) (byte-compile 'foo) (byte-compile 'bar) (foo) (0.054734 0 0.0) (bar) (0.019939000000000002 0 0.0) ```