From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: David Engster Newsgroups: gmane.emacs.devel Subject: Re: Semantic font-lock for Java Date: Fri, 24 Jan 2020 21:38:07 +0100 Message-ID: <87pnf8y4i8.fsf@randomsample> References: <83eevsx1eh.fsf@gnu.org> <83wo9jtncf.fsf@gnu.org> <83iml1s3od.fsf@gnu.org> <83k15grflg.fsf@gnu.org> <87tv4kyelp.fsf@randomsample> <83iml0r5fw.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="53005"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) Cc: emacs-devel@gnu.org, atamariya@gmail.com To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Jan 24 21:39:05 2020 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 1iv5jN-000Dkj-4w for ged-emacs-devel@m.gmane-mx.org; Fri, 24 Jan 2020 21:39:05 +0100 Original-Received: from localhost ([::1]:47540 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iv5jM-0007Rm-76 for ged-emacs-devel@m.gmane-mx.org; Fri, 24 Jan 2020 15:39:04 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:42404) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iv5ii-0006zn-Tt for emacs-devel@gnu.org; Fri, 24 Jan 2020 15:38:25 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iv5ih-0003bV-Jb for emacs-devel@gnu.org; Fri, 24 Jan 2020 15:38:24 -0500 Original-Received: from randomsample.de ([5.45.97.173]:42872) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iv5ih-0003aD-A1; Fri, 24 Jan 2020 15:38:23 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=randomsample.de; s=a; h=Content-Type:MIME-Version:Message-ID:Date:References:In-Reply-To:Subject:Cc:To:From; bh=Xku/rxAk+yLthWCsy2N9z/knvCluHzQWo82LWVdJ3F4=; b=NrDuAjm6scdrH7gZ31PTWrIFxam+tqTboN4zbKW+slzk/0HB09GGmKFtRf5EZHPtJD0S/lCuj9CyE93LLXJ5371t2H5XMiKnnOnbBVqvOCjeZF+3jurua+TkWsiMfelp; Original-Received: from ip5f5abab0.dynamic.kabel-deutschland.de ([95.90.186.176] helo=void) by randomsample.de with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.80) (envelope-from ) id 1iv5if-0002Ue-DY; Fri, 24 Jan 2020 21:38:21 +0100 In-Reply-To: <83iml0r5fw.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 24 Jan 2020 21:59:47 +0200") X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 5.45.97.173 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-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:244585 Archived-At: >> From: David Engster >> Cc: Anand Tamariya , emacs-devel@gnu.org >> Date: Fri, 24 Jan 2020 18:00:02 +0100 >> >> > So we are talking about a 17% slow-down? Not bad. >> >> Yes, but to be fair, this does not include the initial parsing by >> Semantic/Wisent/Bovine. This is usually done for the whole buffer when >> Emacs is idle, and not during scrolling. > > So what happens when the file is visited and its first window-full is > displayed? I can't speak for how Anand has configured his Emacs, but the default is (was?) that the file is displayed first and after a short idle time (1 second?) Semantic will start parsing the current buffer. If you use Semantic's "decoration mode", overlays will be put on the parsed structures. So my guess is the scroll benchmark is simply 17% slower because there are more overlays in the buffer, not because of actual parsing. The parsing itself is pretty slow, unsurprsingly, since it is all in ELisp. Eric has invested a ton of time to make it bearable, mostly through aggressive caching and by making the parser as "lazy" as possible (only parse what is currently needed and do the rest when Emacs is idle). That being said, I of course welcome Anand's work which shows that we already have a framework to store and query ASTs in Emacs. If we want to incorporate something like Treesitter, one should at least take a look at it. -David