From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: Ideal performance of ELisp Date: Tue, 16 Aug 2022 13:22:26 -0400 Message-ID: References: <838rnxvdcq.fsf@gnu.org> <83r11ptksn.fsf@gnu.org> <83a68dti6w.fsf@gnu.org> <874jykzvx9.fsf@yahoo.com> <83fsi4sttn.fsf@gnu.org> <838rnws5c7.fsf@gnu.org> <838rntocb8.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="17754"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) Cc: Eli Zaretskii , Po Lu , Alan Mackenzie , emacs-devel , Yuan Fu To: Lynn Winebarger Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue Aug 16 19:23:28 2022 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 1oO0Ho-0004Ps-NX for ged-emacs-devel@m.gmane-mx.org; Tue, 16 Aug 2022 19:23:28 +0200 Original-Received: from localhost ([::1]:36840 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oO0Hn-0007C0-Ny for ged-emacs-devel@m.gmane-mx.org; Tue, 16 Aug 2022 13:23:27 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:33732) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oO0Gy-00063f-Ld for emacs-devel@gnu.org; Tue, 16 Aug 2022 13:22:36 -0400 Original-Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:46593) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oO0Gw-0000KD-2P; Tue, 16 Aug 2022 13:22:36 -0400 Original-Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 818B51000ED; Tue, 16 Aug 2022 13:22:29 -0400 (EDT) Original-Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id E4B6D100138; Tue, 16 Aug 2022 13:22:27 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1660670547; bh=EnXwpdxYg+o68xvGSJYJXzFlWt6MhGeMPWmV6KDGw+c=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=f1VPq2l2+yTPUd0qxZag7OAJ2px7CWbSYML77IdEiomo7tVCgpDW5tafBhRaIkgPB IirG4r9eFXA6Gx9RTggkcQoCqwShnUpVQTulL3xYJv7M7RLad/+TGQKvbGqum+4Ej7 vj4hANCzLjpkmwGsUNBH+Ibbw4tJ5FNBKUBc8DFfI6fKQrPwCnU0gx9jnoCTMEah+s onMDof9Xigw06Vtz1QYTzlbbqMmIgom+L1xq+IkOTB3L0v3MA3s8BMV0N5+MIlzBXK obYW5fVO4r//jMfNP/VWqrAAuf0sbLiiRYx7sVLxL/UYi3rmf7QddnC7Sd6jh5Z+aK QHdIvrPpgK8/A== Original-Received: from pastel (unknown [45.72.195.111]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id AE1AA12016F; Tue, 16 Aug 2022 13:22:27 -0400 (EDT) In-Reply-To: (Lynn Winebarger's message of "Tue, 16 Aug 2022 12:46:25 -0400") Received-SPF: pass client-ip=132.204.25.50; envelope-from=monnier@iro.umontreal.ca; helo=mailscanner.iro.umontreal.ca X-Spam_score_int: -42 X-Spam_score: -4.3 X-Spam_bar: ---- X-Spam_report: (-4.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham 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:293511 Archived-At: > BTW, I was being serious - if there's a way to write a simple jump to > do case-dispatching for that trampolining while loop, I'd definitely > look at making semantic produce such automata so the native compiler, > in particular, could optimize the result properly. AFAIK a (pcase x ('foo ..) ('bar ...) ...) should be compiled to a `switch` bytecode which uses a hash-table lookup to find the destination target to jump to. Not sure how well it works for very large tables where we risk bumping into the 32K limit of bytecode jumps. Stefan