From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Andrea Corallo Newsgroups: gmane.emacs.devel Subject: Re: On elisp running native Date: Thu, 28 Nov 2019 17:28:00 +0000 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="124308"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (berkeley-unix) Cc: emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Nov 28 18:59:01 2019 Return-path: Envelope-to: ged-emacs-devel@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 1iaO4D-000W92-DI for ged-emacs-devel@m.gmane.org; Thu, 28 Nov 2019 18:59:01 +0100 Original-Received: from localhost ([::1]:51538 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iaO4C-00025k-5V for ged-emacs-devel@m.gmane.org; Thu, 28 Nov 2019 12:59:00 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:35209) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iaNaO-00067A-1G for emacs-devel@gnu.org; Thu, 28 Nov 2019 12:28:13 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iaNaK-00057y-9k for emacs-devel@gnu.org; Thu, 28 Nov 2019 12:28:09 -0500 Original-Received: from mx.sdf.org ([205.166.94.20]:57854) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iaNaK-0004bK-1o for emacs-devel@gnu.org; Thu, 28 Nov 2019 12:28:08 -0500 Original-Received: from sdf.org (IDENT:akrl@sverige.freeshell.org [205.166.94.5]) by mx.sdf.org (8.15.2/8.14.5) with ESMTPS id xASHS1lD013806 (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256 bits) verified NO); Thu, 28 Nov 2019 17:28:01 GMT Original-Received: (from akrl@localhost) by sdf.org (8.15.2/8.12.8/Submit) id xASHS0AU006771; Thu, 28 Nov 2019 17:28:00 GMT In-Reply-To: (Stefan Monnier's message of "Thu, 28 Nov 2019 11:04:18 -0500") X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 205.166.94.20 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 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:242839 Archived-At: Stefan Monnier writes: >> Hi all. I'd like share the investigation I've been working on to give >> Emacs the ability to compile and run elisp as native code. > > This looks great, thanks. > > [ I wasn't able to follow all the explanations at > http://akrl.sdf.org/gccemacs.html, such as the one around "function > frames", with which I'm not familiar. Are these like activation > frames? ] Yes I think we both mean the same. In this case basically where we store automatic variables and data related to the single activated function. > A few questions: > > - How did you get there? I see some "we" in the web page, which makes > it sound like you weren't completely alone. Sorry for that I'm not much into using 'I'. I actually did the design and all the coding my self, but I've been helped with moral support and with the testing by two brave colleagues (one contributed to the elisp benchmarks too porting dhrystone). > - AFAICT most of the new compilation code is in comp.el and comp.c focuses > on "code generation", right? Can you say something about the time it > takes to compile files? > What does the time break down looks like (i.e. percentage spent in > bytecompiler, comp.el, comp.c, libgccjit)? All measurable time is spent in gcc from my early measures. The time spent in comp.el seems really a rounding error. > - Have you tried to use the compiler as benchmark (i.e. how much faster > can Emacs compile (either byte-compile or native-compile)) if the > compiler code is native-compiled (since it's all using > lexical-binding already)? I use the compiler native compiled but because of the previous point I think is hard to measure the difference. Talking about compile time in general I think we are looking at something like few minutes to compile the whole Emacs at speed 0. The time goes up to say ~4 hours with 4 cores for the same job at speed 2. I think it will be interesting to look into the gcc compilation pipe to see where we are losing so much time, my guess is that there's one or few passes that go a little nuts with all the moves we do. I had no time to look into it but my guess is that once understood the problem we can probably dime it down. Andrea -- akrl@sdf.org