From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: npostavs@users.sourceforge.net Newsgroups: gmane.emacs.bugs Subject: bug#26079: 26.0.50; Performance regression in delete-trailing-whitespace Date: Mon, 13 Mar 2017 22:01:06 -0400 Message-ID: <87d1dk7h25.fsf@users.sourceforge.net> References: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Trace: blaine.gmane.org 1489456819 32319 195.159.176.226 (14 Mar 2017 02:00:19 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 14 Mar 2017 02:00:19 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) Cc: 26079@debbugs.gnu.org, Michal Nazarewicz To: Sho Takemori Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Mar 14 03:00:09 2017 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1cnbkv-0007NO-9g for geb-bug-gnu-emacs@m.gmane.org; Tue, 14 Mar 2017 03:00:09 +0100 Original-Received: from localhost ([::1]:55973 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cnbl1-0000p5-D1 for geb-bug-gnu-emacs@m.gmane.org; Mon, 13 Mar 2017 22:00:15 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:44833) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cnbku-0000mT-89 for bug-gnu-emacs@gnu.org; Mon, 13 Mar 2017 22:00:09 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cnbko-0001h6-Mk for bug-gnu-emacs@gnu.org; Mon, 13 Mar 2017 22:00:08 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:56333) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cnbko-0001gy-Jy for bug-gnu-emacs@gnu.org; Mon, 13 Mar 2017 22:00:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1cnbko-0002UI-6i for bug-gnu-emacs@gnu.org; Mon, 13 Mar 2017 22:00:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: npostavs@users.sourceforge.net Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 14 Mar 2017 02:00:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 26079 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 26079-submit@debbugs.gnu.org id=B26079.14894567979526 (code B ref 26079); Tue, 14 Mar 2017 02:00:02 +0000 Original-Received: (at 26079) by debbugs.gnu.org; 14 Mar 2017 01:59:57 +0000 Original-Received: from localhost ([127.0.0.1]:54532 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cnbkj-0002TV-6k for submit@debbugs.gnu.org; Mon, 13 Mar 2017 21:59:57 -0400 Original-Received: from mail-io0-f180.google.com ([209.85.223.180]:34000) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cnbkh-0002TD-5r; Mon, 13 Mar 2017 21:59:55 -0400 Original-Received: by mail-io0-f180.google.com with SMTP id b140so1949717iof.1; Mon, 13 Mar 2017 18:59:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-transfer-encoding; bh=1Ot6EUICwAxfrR1Lr1OkorigBKDynvUk32gY/fbArqc=; b=AP83yDrF5sy1LV1dZTN1B0RCzZ2vWbSagY97zkKdWrr0SvwpmhYlkw5g7i441Qk7UM otFaIaee7r+ijevdI3/44pqHDUeIejfCGKeyKfTOQ0LKCkxYzKAGQ1qLgf+NKbavcQS3 4EvaRWSQlkDukuqoTQMbwAqMgRukV5IlagrPSNGl8qQzXPn7+EC1KfL4poVpAo+RVZc5 o4Wg3RGFfOwZUmE/1Bz05zgkN22j9GB68zP0zXQwFsxRkh7sgRJXTz3Br8mo8PjAWi2P Bki/IlIYXv1Kxv9BKQ8z5cJBGMTxk725oVn3mS4l6//kJbpyS9TjfsF41mKJqr7z7JCR WqzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:references:date :in-reply-to:message-id:user-agent:mime-version :content-transfer-encoding; bh=1Ot6EUICwAxfrR1Lr1OkorigBKDynvUk32gY/fbArqc=; b=GiD3DXFjVKGM6jhjz9E4sWi/9m0dJw6yM+x+0ndwHzD25o/9qY7NjT/SNfYAAWprAf 4gCM1uYNekEG+2fCRqYjZ4k9UknRR8uEO7jx4icYeqM0bIlCc9ayq0jQdr3BRzmMPOnj Md+PDR3mXlKalF0YK2uzMR7hjoeaeLDKaJyfrTj/ExX/0Lmpxbh6LOjUsVGVAo6NmcFn 8dgEq/gRlbH+0zXVRot8CsiLQJD3VhU+8ia1+LMmWM3MaShIzxqTaCj8A1ESZ78gcyPM BqEqjq9CjVENfwrh7ZJlPUNBco9tosrc92oNvh1WotTN+0Y1bo6S/jHLHCYeYMxedTrV 3U4Q== X-Gm-Message-State: AMke39m1Nl2d7LY6wZr7qRi7mxmFCQFFdmgEdyD8mq8aodD249HbeBTX5HaqU+x42JOhJw== X-Received: by 10.107.155.16 with SMTP id d16mr29216418ioe.125.1489456789484; Mon, 13 Mar 2017 18:59:49 -0700 (PDT) Original-Received: from zony ([45.2.7.65]) by smtp.googlemail.com with ESMTPSA id m100sm9051865iod.14.2017.03.13.18.59.48 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 13 Mar 2017 18:59:48 -0700 (PDT) In-Reply-To: (Sho Takemori's message of "Mon, 13 Mar 2017 11:13:28 +0900") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:130561 Archived-At: tags 26079 confirmed quit Sho Takemori writes: > Dear developers, > > delete-trailing-whitespace in Emacs 26 for large files is very slow. > > For example, it took about 1.6s for this file (https://raw.githubusercont= ent.com/stakemori/e8theta_degree3/master/results/wt18_17_5/wt18_17_5.org). > But in Emacs 25, it took about 0.003s. > A similar code to the following is used in delete-trailing-whitespace. An= d it is slow for large files. > > (save-excursion > (let ((end-marker nil)) > (goto-char (point-min)) > (with-syntax-table (make-syntax-table (syntax-table)) > (modify-syntax-entry ?\f "_") > (modify-syntax-entry ?\n "_") > (re-search-forward "\\s-+$" end-marker t)))) It seems that this regex causes a lot of backtracking when \n is not whitespace. It was introduced in [1: 7c6317a049]; restoring the strategy from before seems make it fast again. Michal, do you think that's the best way to fix this? --- i/lisp/simple.el +++ i/lisp/simple.el @@ -632,12 +632,11 @@ delete-trailing-whitespace (goto-char (or start (point-min))) (with-syntax-table (make-syntax-table (syntax-table)) ;; Don't delete formfeeds, even if they are considered whitespac= e. (modify-syntax-entry ?\f "_") - ;; Treating \n as non-whitespace makes things easier. - (modify-syntax-entry ?\n "_") - (while (re-search-forward "\\s-+$" end-marker t) - (let ((b (match-beginning 0)) (e (match-end 0))) + (while (re-search-forward "\\s-$" end-marker t) + (skip-syntax-backward "-" (line-beginning-position)) + (let ((b (point)) (e (match-end 0))) (when (region-modifiable-p b e) (delete-region b e))))) (if end (set-marker end-marker nil) 1: 2016-07-04 23:44:06 +0200 7c6317a0498b6690ea668909ac012cb45e6f809b Simplify =E2=80=98delete-trailing-whitespace=E2=80=99 by not treating \n = as whitespace