From debbugs-submit-bounces@debbugs.gnu.org Thu Jul 21 10:30:02 2016 Received: (at submit) by debbugs.gnu.org; 21 Jul 2016 14:30:02 +0000 Received: from localhost ([127.0.0.1]:60562 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bQEz7-0000O7-TQ for submit@debbugs.gnu.org; Thu, 21 Jul 2016 10:30:01 -0400 Received: from eggs.gnu.org ([208.118.235.92]:47841) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bQEz2-0000Nn-QD for submit@debbugs.gnu.org; Thu, 21 Jul 2016 10:29:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bQEyr-0002pt-IQ for submit@debbugs.gnu.org; Thu, 21 Jul 2016 10:29:47 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, HTML_MESSAGE,T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:59498) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bQEyr-0002p9-F4 for submit@debbugs.gnu.org; Thu, 21 Jul 2016 10:29:41 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38762) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bQEyk-0000mW-3a for bug-gnu-emacs@gnu.org; Thu, 21 Jul 2016 10:29:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bQEye-0002ne-0d for bug-gnu-emacs@gnu.org; Thu, 21 Jul 2016 10:29:34 -0400 Received: from mail-pf0-x236.google.com ([2607:f8b0:400e:c00::236]:34949) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bQEyd-0002nK-Aa for bug-gnu-emacs@gnu.org; Thu, 21 Jul 2016 10:29:27 -0400 Received: by mail-pf0-x236.google.com with SMTP id x72so30983151pfd.2 for ; Thu, 21 Jul 2016 07:29:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:message-id:subject:mime-version; bh=laxjoxFplMCq9+8IalD0UdqT+YtI5uZEi2zUJvE0Tjg=; b=NIMY3ImTxpUPrqwe1ElwKvMgEnjAMHvvpQ8aNYRCbIPO4z2BDH4wi78XV1WMLr8KxD 3odwTUhPcNIeGXrUtWoMJwfvGRvzFl+0MP3ilp/2njRra3bTs3izlecajdqnwE6Xl2Ca hksWdvdcK9j0nejj51qQRRj4kKgE+gIOL1zbhYX7RrxMWrumsP4RYxTyukhHo78E0qO2 rMQs0X1XAbpyeQJmm51scqAqcR90MUJwD/e/efYWXtPsOB/DPDzFycxIFaf7CgXJFONH MRTnbWETYonQzIDc752Deii2mc5e3IhDBBG7mVTI0CkF08XXRV9hkCZ7qKzWNvRnjqGI n+rQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:message-id:subject:mime-version; bh=laxjoxFplMCq9+8IalD0UdqT+YtI5uZEi2zUJvE0Tjg=; b=DWVry4OH59tj3v/H1r/trdm5uSUmuDhK8zyPXrwXjlnzrVD9Nz7xdTYe+BIx8VFsXL +XXIL0Kb0gpjG5BJ4x2g5EXbOtsSr06k9DeAwGEYDZMW38OSw0SSNYP3kP5MPZTto+iC fubgeARa6WvJMyD8pF5pCbm4I627e/teXiHHzK36hn3xmWBhcT40P86ztc7y4uSDuuYU Aun1JXDBrUSizxWnwC89h5/nVgsNaW0g7Hkjm4/aYmKR6W1NwWILyGrI9IwAkgW99new /JCS748hv8Fgw0gSsIv3yI/1sCcp/J+xKRcgwihdxZMHEEw4weSKQoCBoHARc6d4KgvC ZeYQ== X-Gm-Message-State: ALyK8tL7o3NJYi+3LWP8xbG46IwXEjtVlGDkCidoCDk+D08ah3LpiDPIZEVPLYbtikSIVw== X-Received: by 10.98.77.65 with SMTP id a62mr73508276pfb.128.1469111364632; Thu, 21 Jul 2016 07:29:24 -0700 (PDT) Received: from aaronmbp.local (c-76-28-156-232.hsd1.wa.comcast.net. [76.28.156.232]) by smtp.gmail.com with ESMTPSA id t126sm12886926pfd.28.2016.07.21.07.29.22 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 21 Jul 2016 07:29:22 -0700 (PDT) Date: Thu, 21 Jul 2016 07:29:19 -0700 From: Aaron Jensen To: "=?utf-8?Q?bug-gnu-emacs=40gnu.org?=" Message-ID: Subject: 25.0.95; syntax-ppss can be slow MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="5790dc42_6b8b4567_66d0" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.0 (----) --5790dc42_6b8b4567_66d0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline In certain situations, the caching of syntax-ppss can seem to be insufficient for good performance when syntax-ppss is invoked in a tight loop. smartparens is a popular package that currently invokes syntax-ppss in a tight loop (about 30-100 times depending on how many match pairs are configured). syntax-ppss has caching built in, but it is willing to use a cache from a further back position and do a `parse-partial-sexp` from the old position to the current. Afterwards, it does not set the cache with the current position. As such, in the pathological case, it can parse ~2000 characters 30-100 times in a tight loop. This is slow enough to show up in profiling and affect typing latency. To repro, install: smartparens (you can use https://github.com/aaronjensen/smartparens/tree/limit-binding-of-case-fold-search to alleviate a different performance issue which could distract in the profiling) elixir-mode Load this file into a buffer, ensure elixir-mode is enabled: https://gist.github.com/aaronjensen/d4cd40347a916dd36c8239afecf64a7d Go down to the chunk_by function and type inside of it. If you profile, you'll see that syntax-ppss rises to the top. Here is an example reversed profile: + redisplay 218 32% - progn 120 18% - if 120 18% - condition-case 120 18% - let 120 18% + syntax-ppss 120 18% + sit-for 101 15% + sp--looking-back 55 8% + font-lock-fontify-keywords-region 45 6% + alchemist-project-root 41 6% For what it is worth, if the file is longer this tends to not happen as syntax-ppss ends up executing for something (end of buffer it seems) outside of the "close" heuristic which will ultimately cause the syntax-ppss-last to get set to the current position for the tight loop. The issue is only when the first branch of syntax-ppss is taken in a tight loop and pos - old-pos is great enough. Please see https://github.com/Fuco1/smartparens/pull/629 for additional context and discussion. Thanks! Aaron In GNU Emacs 25.0.95.1 (x86_64-apple-darwin15.5.0, NS appkit-1404.47 Version 10.11.5 (Build 15F34)) of 2016-06-10 built on aaronmbp.local Windowing system distributor 'Apple', version 10.3.1404 Configured using: 'configure --disable-dependency-tracking --disable-silent-rules --enable-locallisppath=/usr/local/share/emacs/site-lisp --infodir=/usr/local/Cellar/emacs/25.0.95/share/info/emacs --prefix=/usr/local/Cellar/emacs/25.0.95 --with-xml2 --without-dbus --with-gnutls --with-rsvg --with-imagemagick --with-ns --disable-ns-self-contained' Configured features: JPEG RSVG IMAGEMAGICK NOTIFY ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS NS Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Elixir Minor modes in effect: alchemist-mode: t goto-address-prog-mode: t bug-reference-prog-mode: t auto-highlight-symbol-mode: t clean-aindent-mode: t highlight-numbers-mode: t highlight-parentheses-mode: t rainbow-delimiters-mode: t yas-global-mode: t yas-minor-mode: t projectile-global-mode: t projectile-mode: t recentf-mode: t shackle-mode: t global-hungry-delete-mode: t hungry-delete-mode: t evil-mc-mode: t hl-todo-mode: t global-spacemacs-whitespace-cleanup-mode: t spacemacs-whitespace-cleanup-mode: t ws-butler-global-mode: t ws-butler-mode: t winner-mode: t window-numbering-mode: t volatile-highlights-mode: t global-vi-tilde-fringe-mode: t vi-tilde-fringe-mode: t spaceline-info-mode: t spaceline-helm-mode: t save-place-mode: t savehist-mode: t popwin-mode: t persp-mode: t Info-breadcrumbs-in-mode-line-mode: t ido-vertical-mode: t helm-mode: t global-git-gutter+-mode: t global-git-commit-mode: t async-bytecomp-package-mode: t shell-dirtrack-mode: t flyspell-mode: t global-flycheck-mode: t flycheck-mode: t flx-ido-mode: t eyebrowse-mode: t global-evil-surround-mode: t evil-surround-mode: t global-evil-search-highlight-persist: t evil-search-highlight-persist: t show-smartparens-global-mode: t show-smartparens-mode: t smartparens-mode: t evil-escape-mode: t global-anzu-mode: t anzu-mode: t eval-sexp-fu-flash-mode: t diff-auto-refine-mode: t company-mode: t hybrid-mode: t which-key-mode: t override-global-mode: t global-undo-tree-mode: t undo-tree-mode: t evil-mode: t evil-local-mode: t spacemacs-leader-override-mode: t global-spacemacs-leader-override-mode: t global-hl-line-mode: t xterm-mouse-mode: t global-auto-revert-mode: t global-page-break-lines-mode: t global-eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t column-number-mode: t line-number-mode: t transient-mark-mode: t abbrev-mode: t hs-minor-mode: t Recent messages: 20394 19299 [100 times] 20390 19299 [2 times] 20394 19299 syntax-ppss No profiler stopped CPU profiler started CPU profiler stopped CPU profiler started Quit Mark saved where search started [2 times] Load-path shadows: /Users/aaronjensen/.emacs.d/elpa/helm-20160718.746/helm-multi-match hides /Users/aaronjensen/.emacs.d/elpa/helm-core-20160718.746/helm-multi-match /Users/aaronjensen/.emacs.d/elpa/ox-gfm-20160520.2040/ox-gfm hides /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-gfm /Users/aaronjensen/.emacs.d/elpa/org-download-20160620.607/org-download hides /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-download /Users/aaronjensen/.emacs.d/elpa/org-bullets-20140918.1137/org-bullets hides /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-bullets /Users/aaronjensen/.emacs.d/elpa/ht-20150830.1115/ht hides ~/.emacs.d/core/libs/ht /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-texinfo hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-texinfo /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-publish hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-publish /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-org hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-org /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-odt hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-odt /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-md hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-md /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-man hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-man /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-latex hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-latex /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-icalendar hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-icalendar /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-html hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-html /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-beamer hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-beamer /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-ascii hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-ascii /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-w3m hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-w3m /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-version hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-version /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-timer hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-timer /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-table hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-table /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-src hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-src /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-rmail hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-rmail /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-protocol hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-protocol /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-plot hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-plot /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-pcomplete hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-pcomplete /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-mouse hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-mouse /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-mobile hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-mobile /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-mhe hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-mhe /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-macs hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-macs /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-macro hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-macro /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-loaddefs hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-loaddefs /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-list hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-list /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-irc hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-irc /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-install hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-install /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-inlinetask hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-inlinetask /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-info hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-info /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-indent hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-indent /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-id hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-id /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-habit hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-habit /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-gnus hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-gnus /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-footnote hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-footnote /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-feed hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-feed /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-faces hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-faces /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-eshell hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-eshell /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-entities hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-entities /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-element hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-element /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-docview hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-docview /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-datetree hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-datetree /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-ctags hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-ctags /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-crypt hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-crypt /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-compat hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-compat /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-colview hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-colview /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-clock hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-clock /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-capture hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-capture /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-bibtex hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-bibtex /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-bbdb hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-bbdb /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-attach hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-attach /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-archive hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-archive /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-agenda hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-agenda /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-tangle hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-tangle /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-table hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-table /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-sqlite hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-sqlite /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-sql hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-sql /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-shen hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-shen /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-screen hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-screen /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-scheme hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-scheme /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-scala hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-scala /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-sass hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-sass /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-ruby hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-ruby /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-ref hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-ref /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-R hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-R /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-python hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-python /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-plantuml hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-plantuml /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-picolisp hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-picolisp /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-perl hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-perl /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-org hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-org /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-octave hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-octave /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-ocaml hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-ocaml /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-mscgen hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-mscgen /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-maxima hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-maxima /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-matlab hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-matlab /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-makefile hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-makefile /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-lob hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-lob /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-lisp hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-lisp /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-lilypond hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-lilypond /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-ledger hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-ledger /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-latex hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-latex /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-keys hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-keys /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-js hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-js /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-java hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-java /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-io hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-io /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-haskell hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-haskell /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-gnuplot hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-gnuplot /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-fortran hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-fortran /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-exp hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-exp /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-eval hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-eval /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-emacs-lisp hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-emacs-lisp /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-dot hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-dot /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-ditaa hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-ditaa /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-css hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-css /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-core hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-core /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-comint hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-comint /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-clojure hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-clojure /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-calc hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-calc /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-C hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-C /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-awk hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-awk /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-asymptote hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-asymptote /Users/aaronjensen/.emacs.d/elpa/seq-2.16/seq hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/emacs-lisp/seq Features: (shadow sort mail-extr emacsbug evil-nerd-commenter evil-nerd-commenter-operator tabify helm-command helm-elisp helm-eval misearch multi-isearch network-stream nsm starttls dockerfile-mode alchemist alchemist-macroexpand alchemist-company alchemist-help alchemist-complete alchemist-refcard alchemist-phoenix alchemist-compile alchemist-iex alchemist-message alchemist-hooks alchemist-hex alchemist-mix alchemist-info alchemist-goto alchemist-scope alchemist-eval alchemist-interact alchemist-server alchemist-execute alchemist-report alchemist-test-mode alchemist-project alchemist-file alchemist-key alchemist-utils elixir-mode pkg-info epl elixir-smie company-tern dash-functional js-doc iswitchb js2-imenu-extras js2-refactor js2r-paredit js2r-conveniences js2r-conditionals js2r-wrapping js2r-functions js2r-vars js2r-iife js2r-formatting js2r-helpers skewer-mode cache-table simple-httpd tern cursor-sensor js2-mode js cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs imenu flycheck-elm company-robe evil-matchit robe url-handlers inf-ruby rubocop ruby-tools sh-script executable yaml-mode auto-compile packed elisp-slime-nav evil-cleverparens evil-cleverparens-text-objects evil-cleverparens-util paredit lispy swiper ivy delsel iedit iedit-lib multiple-cursors-core lispy-inline avy semantic/db eieio-base semantic/util-modes semantic/util semantic semantic/tag semantic/lex semantic/fw mode-local cedet evil-ediff ediff-merg ediff-wind ediff-diff ediff-mult ediff-help ediff-init ediff-util ediff edebug lispy-tags goto-addr bug-reference auto-highlight-symbol clean-aindent-mode highlight-numbers parent-mode highlight-parentheses hideshow rainbow-delimiters company-files company-keywords company-etags company-gtags company-template company-dabbrev-code company-dabbrev company-capf org-eldoc evil-org ob-shell org-bullets org-download url-http tls gnutls url-auth url-gw toc-org ert debug clojure-snippets yasnippet image-file org-rmail org-mhe org-irc org-info org-gnus org-docview org-bibtex bibtex org-bbdb org-w3m mu4e-maildirs-extension org-mu4e mu4e mu4e-speedbar speedbar sb-image ezimage dframe mu4e-main mu4e-context mu4e-view epa mu4e-headers mu4e-compose mu4e-draft mu4e-actions rfc2368 smtpmail sendmail mu4e-mark mu4e-message html2text mu4e-proc mu4e-utils doc-view jka-compr mu4e-lists mu4e-vars mu4e-meta ox-gfm ox-md ox-latex ox-icalendar ox-html ox-ascii ox-publish ox org-element avl-tree org org-macro org-footnote org-pcomplete org-list org-faces org-entities org-version ob-emacs-lisp ob ob-tangle ob-ref ob-lob ob-table ob-exp org-src ob-keys ob-comint ob-core ob-eval org-compat org-macs org-loaddefs cal-menu calendar cal-loaddefs vc-git projectile grep ibuf-ext ibuffer recentf tree-widget shackle hungry-delete fill-or-unfill fix-autorevert-breaking-git eval-overlay fix-bracketed-paste company-simple-complete init-terminal-cursor evil-terminal-cursor-changer init-org init-magit init-elixir init-deft evil-mc evil-mc-command-execute evil-mc-command-record evil-mc-cursor-make evil-mc-region evil-mc-cursor-state evil-mc-undo evil-mc-vars evil-mc-known-commands evil-mc-common hl-todo xterm-color spacemacs-whitespace-cleanup ws-butler winner window-numbering etags xref project volatile-highlights vi-tilde-fringe tmux spaceline-config spaceline-segments spaceline powerline powerline-separators color powerline-themes smartparens-config smartparens-ruby smartparens-html saveplace savehist ruby-test-mode pcre2el rxt re-builder ruby-mode smie popwin persp-mode osx-trash info+ image-mode ido-vertical-mode helm-mode helm-files image-dired dired-x dired-aux ffap helm-buffers helm-elscreen helm-tags helm-bookmark helm-adaptive helm-info bookmark pp helm-locate helm-grep helm-regexp helm-external helm-net browse-url xml url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap helm-utils compile helm-help helm-types git-gutter-fringe+ fringe-helper git-gutter+ git-commit with-editor async-bytecomp async tramp-sh server log-edit message rfc822 mml mml-sec epg mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log docker-tramp tramp-cache tramp tramp-compat tramp-loaddefs trampver shell pcomplete comint ansi-color flyspell-correct-helm helm helm-source helm-multi-match helm-lib dired flyspell-correct flyspell ispell flycheck find-func flx-ido flx ido eyebrowse format-spec exec-path-from-shell evil-unimpaired f s evil-surround evil-search-highlight-persist evil-numbers evil-lisp-state smartparens evil-indent-plus evil-exchange evil-escape evil-args evil-anzu anzu cider-eval-sexp-fu eval-sexp-fu rx highlight noutline outline diff-hl vc-dir ewoc vc vc-dispatcher diff-mode company-web dash company-css company web-completion-data adaptive-wrap hybrid-mode evil-evilified-state which-key use-package diminish bind-key hydra lv cus-edit cus-start cus-load evil evil-integration undo-tree diff evil-maps evil-commands evil-jumps evil-command-window evil-types evil-search evil-ex evil-macros evil-repeat evil-states evil-core evil-common windmove thingatpt rect evil-digraphs evil-vars ring info bind-map quelpa url-parse auth-source gnus-util password-cache url-vars package-build mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mm-util help-fns mail-prsvr json map lisp-mnt hl-line xt-mouse autorevert filenotify disp-table wid-edit monokai-theme finder-inf init-html init-javascript sgml-mode init-evil core-configuration-layer eieio-compat cl-seq ht cl warnings package epg-config seq eieio byte-opt bytecomp byte-compile cl-extra help-mode cconv eieio-core core-spacemacs core-use-package-ext core-transient-state core-micro-state core-toggle core-keybindings core-fonts-support core-spacemacs-buffer derived edmacro kmacro core-funcs cl-macs gv core-themes-support core-display-init core-auto-completion core-release-management core-dotspacemacs core-command-line core-debug advice profiler easymenu cl-loaddefs cl-lib page-break-lines easy-mmode subr-x pcase time-date mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel ns-win ucs-normalize term/common-win tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese charscript case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote kqueue cocoa ns multi-tty make-network-process emacs) Memory information: ((conses 16 1068122 891337) (symbols 48 82031 35) (miscs 40 6570 10733) (strings 32 209973 395364) (string-bytes 1 7368564) (vectors 16 130382) (vector-slots 8 2505920 346982) (floats 8 1994 3740) (intervals 56 13720 14404) (buffers 976 61)) Aaron --5790dc42_6b8b4567_66d0 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline
= =

In certain = situations, the caching of syntax-ppss can seem to be
insuf= ficient for good performance when syntax-ppss is invoked in a tight
loop. smartparens is a popular package that currently invokes
syntax-ppss in a tight loop (about 30-100 times depending on = how many
match pairs are configured). syntax-ppss has cachi= ng built in, but it is
willing to use a cache from a furthe= r back position and do a
=60parse-partial-sexp=60 from the = old position to the current. Afterwards,
it does not set th= e cache with the current position. As such, in the
patholog= ical case, it can parse =7E2000 characters 30-100 times in a tight
loop. This is slow enough to show up in profiling and affect typi= ng
latency.

To repro, install:=

smartparens (you can use
http= s://github.com/aaronjensen/smartparens/tree/limit-binding-of-case-fold-se= arch
to alleviate a different performance issue which could= distract in the profiling)
elixir-mode

<= /div>
Load this file into a buffer, ensure elixir-mode is enabled: ht= tps://gist.github.com/aaronjensen/d4cd40347a916dd36c8239afecf64a7d

Go down to the chunk=5Fby function and type inside= of it. If you profile,
you'll see that syntax-ppss rises t= o the top. Here is an example
reversed profile:

+ redisplay = 218 32%
- progn = 120 18%
- if = 120 18%
- con= dition-case 120 18%
- let = 120 18%
+ syntax-ppss = 120 18%
+ sit-for = 101 15%
+ sp--looking-ba= ck 55 8%
= + font-lock-fontify-keywords-region 45 6= %
+ alchemist-project-root = 41 6%


=46or what = it is worth, if the file is longer this tends to not happen as
<= div>syntax-ppss ends up executing for something (end of buffer it seems) = outside of the =22close=22
heuristic which will ultimately = cause the syntax-ppss-last to get set to
the current positi= on for the tight loop. The issue is only when the
first bra= nch of syntax-ppss is taken in a tight loop and pos - old-pos
is great enough.

Please see https://githu= b.com/=46uco1/smartparens/pull/629 for additional
context a= nd discussion.

Thanks=21

<= /div>
Aaron



In GNU Emacs 25.0.95.1 (x86=5F64-apple-darwin15.5.0, NS appkit-1404.47 = Version 10.11.5 (Build 15=4634))
of 2016-06-10 built on aa= ronmbp.local
Windowing system distributor 'Apple', version = 10.3.1404
Configured using:
'configure --dis= able-dependency-tracking --disable-silent-rules
--enable-l= ocallisppath=3D/usr/local/share/emacs/site-lisp
--infodir=3D= /usr/local/Cellar/emacs/25.0.95/share/info/emacs
--prefix=3D= /usr/local/Cellar/emacs/25.0.95 --with-xml2 --without-dbus
= --with-gnutls --with-rsvg --with-imagemagick --with-ns
--= disable-ns-self-contained'

Configured featur= es:
JPEG RSVG IMAGEMAGICK NOTI=46Y ACL GNUTLS LIBXML2 ZLIB = TOOLKIT=5FSCROLL=5FBARS
NS

Imp= ortant settings:
value of =24LANG: en=5FUS.UT=46-8
locale-coding-system: utf-8-unix

M= ajor mode: Elixir

Minor modes in effect:
=
alchemist-mode: t
goto-address-prog-mode: t<= br>
bug-reference-prog-mode: t
auto-highlight= -symbol-mode: t
clean-aindent-mode: t
hig= hlight-numbers-mode: t
highlight-parentheses-mode: t
<= /div>
rainbow-delimiters-mode: t
yas-global-mode: t=
yas-minor-mode: t
projectile-global-mode= : t
projectile-mode: t
recentf-mode: t
shackle-mode: t
global-hungry-delete-mode: = t
hungry-delete-mode: t
evil-mc-mode: t
hl-todo-mode: t
global-spacemacs-whitespac= e-cleanup-mode: t
spacemacs-whitespace-cleanup-mode: t
ws-butler-global-mode: t
ws-butler-mode: t<= br>
winner-mode: t
window-numbering-mode: t
volatile-highlights-mode: t
global-vi-tild= e-fringe-mode: t
vi-tilde-fringe-mode: t
= spaceline-info-mode: t
spaceline-helm-mode: t
save-place-mode: t
savehist-mode: t
= popwin-mode: t
persp-mode: t
Info-breadcr= umbs-in-mode-line-mode: t
ido-vertical-mode: t
<= div> helm-mode: t
global-git-gutter+-mode: t
global-git-commit-mode: t
async-bytecomp-package-mod= e: t
shell-dirtrack-mode: t
flyspell-mode= : t
global-flycheck-mode: t
flycheck-mode= : t
flx-ido-mode: t
eyebrowse-mode: t
=
global-evil-surround-mode: t
evil-surround-m= ode: t
global-evil-search-highlight-persist: t
<= div> evil-search-highlight-persist: t
show-smartparens-g= lobal-mode: t
show-smartparens-mode: t
sm= artparens-mode: t
evil-escape-mode: t
glo= bal-anzu-mode: t
anzu-mode: t
eval-sexp-f= u-flash-mode: t
diff-auto-refine-mode: t
= company-mode: t
hybrid-mode: t
which-key-= mode: t
override-global-mode: t
global-un= do-tree-mode: t
undo-tree-mode: t
evil-mo= de: t
evil-local-mode: t
spacemacs-leader= -override-mode: t
global-spacemacs-leader-override-mode: = t
global-hl-line-mode: t
xterm-mouse-mode= : t
global-auto-revert-mode: t
global-pag= e-break-lines-mode: t
global-eldoc-mode: t
= electric-indent-mode: t
mouse-wheel-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
<= div> global-font-lock-mode: t
font-lock-mode: t
auto-composition-mode: t
auto-encryption-mode: t<= br>
auto-compression-mode: t
column-number-mo= de: t
line-number-mode: t
transient-mark-= mode: t
abbrev-mode: t
hs-minor-mode: t

Recent messages:
20394 19299 =5B= 100 times=5D
20390 19299 =5B2 times=5D
20394 = 19299
syntax-ppss
No profiler stopped
CPU profiler started
CPU profiler stopped
<= div>CPU profiler started
Quit
Mark saved wher= e search started =5B2 times=5D

Load-path sha= dows:
/Users/aaronjensen/.emacs.d/elpa/helm-20160718.746/he= lm-multi-match hides /Users/aaronjensen/.emacs.d/elpa/helm-core-20160718.= 746/helm-multi-match
/Users/aaronjensen/.emacs.d/elpa/ox-gf= m-20160520.2040/ox-gfm hides /Users/aaronjensen/.emacs.d/elpa/org-plus-co= ntrib-20160718/ox-gfm
/Users/aaronjensen/.emacs.d/elpa/org-= download-20160620.607/org-download hides /Users/aaronjensen/.emacs.d/elpa= /org-plus-contrib-20160718/org-download
/Users/aaronjensen/= .emacs.d/elpa/org-bullets-20140918.1137/org-bullets hides /Users/aaronjen= sen/.emacs.d/elpa/org-plus-contrib-20160718/org-bullets
/Us= ers/aaronjensen/.emacs.d/elpa/ht-20150830.1115/ht hides =7E/.emacs.d/core= /libs/ht
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-= 20160718/ox hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lis= p/org/ox
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-= 20160718/ox-texinfo hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.= 0.95/lisp/org/ox-texinfo
/Users/aaronjensen/.emacs.d/elpa/o= rg-plus-contrib-20160718/ox-publish hides /usr/local/Cellar/emacs/25.0.95= /share/emacs/25.0.95/lisp/org/ox-publish
/Users/aaronjensen= /.emacs.d/elpa/org-plus-contrib-20160718/ox-org hides /usr/local/Cellar/e= macs/25.0.95/share/emacs/25.0.95/lisp/org/ox-org
/Users/aar= onjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-odt hides /usr/local/= Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-odt
/U= sers/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-md hides /usr= /local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-md
<= div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-man hid= es /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-man
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox= -latex hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org= /ox-latex
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib= -20160718/ox-icalendar hides /usr/local/Cellar/emacs/25.0.95/share/emacs/= 25.0.95/lisp/org/ox-icalendar
/Users/aaronjensen/.emacs.d/e= lpa/org-plus-contrib-20160718/ox-html hides /usr/local/Cellar/emacs/25.0.= 95/share/emacs/25.0.95/lisp/org/ox-html
/Users/aaronjensen/= .emacs.d/elpa/org-plus-contrib-20160718/ox-beamer hides /usr/local/Cellar= /emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-beamer
/User= s/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-ascii hides /usr= /local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-ascii
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org hid= es /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-w= 3m hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org= -w3m
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-2016= 0718/org-version hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.9= 5/lisp/org/org-version
/Users/aaronjensen/.emacs.d/elpa/org= -plus-contrib-20160718/org-timer hides /usr/local/Cellar/emacs/25.0.95/sh= are/emacs/25.0.95/lisp/org/org-timer
/Users/aaronjensen/.em= acs.d/elpa/org-plus-contrib-20160718/org-table hides /usr/local/Cellar/em= acs/25.0.95/share/emacs/25.0.95/lisp/org/org-table
/Users/a= aronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-src hides /usr/loc= al/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-src
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-rmail hi= des /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-rmai= l
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-2016071= 8/org-protocol hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/= lisp/org/org-protocol
/Users/aaronjensen/.emacs.d/elpa/org-= plus-contrib-20160718/org-plot hides /usr/local/Cellar/emacs/25.0.95/shar= e/emacs/25.0.95/lisp/org/org-plot
/Users/aaronjensen/.emacs= .d/elpa/org-plus-contrib-20160718/org-pcomplete hides /usr/local/Cellar/e= macs/25.0.95/share/emacs/25.0.95/lisp/org/org-pcomplete
/Us= ers/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-mouse hides /= usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-mouse
=
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org= -mobile hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/or= g/org-mobile
/Users/aaronjensen/.emacs.d/elpa/org-plus-cont= rib-20160718/org-mhe hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25= .0.95/lisp/org/org-mhe
/Users/aaronjensen/.emacs.d/elpa/org= -plus-contrib-20160718/org-macs hides /usr/local/Cellar/emacs/25.0.95/sha= re/emacs/25.0.95/lisp/org/org-macs
/Users/aaronjensen/.emac= s.d/elpa/org-plus-contrib-20160718/org-macro hides /usr/local/Cellar/emac= s/25.0.95/share/emacs/25.0.95/lisp/org/org-macro
/Users/aar= onjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-loaddefs hides /usr/= local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-loaddefs
<= /div>
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-= list hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/o= rg-list
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-2= 0160718/org-irc hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95= /lisp/org/org-irc
/Users/aaronjensen/.emacs.d/elpa/org-plus= -contrib-20160718/org-install hides /usr/local/Cellar/emacs/25.0.95/share= /emacs/25.0.95/lisp/org/org-install
/Users/aaronjensen/.ema= cs.d/elpa/org-plus-contrib-20160718/org-inlinetask hides /usr/local/Cella= r/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-inlinetask
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-info hide= s /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-info
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/o= rg-indent hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/= org/org-indent
/Users/aaronjensen/.emacs.d/elpa/org-plus-co= ntrib-20160718/org-id hides /usr/local/Cellar/emacs/25.0.95/share/emacs/2= 5.0.95/lisp/org/org-id
/Users/aaronjensen/.emacs.d/elpa/org= -plus-contrib-20160718/org-habit hides /usr/local/Cellar/emacs/25.0.95/sh= are/emacs/25.0.95/lisp/org/org-habit
/Users/aaronjensen/.em= acs.d/elpa/org-plus-contrib-20160718/org-gnus hides /usr/local/Cellar/ema= cs/25.0.95/share/emacs/25.0.95/lisp/org/org-gnus
/Users/aar= onjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-footnote hides /usr/= local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-footnote
<= /div>
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-= feed hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/o= rg-feed
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-2= 0160718/org-faces hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.= 95/lisp/org/org-faces
/Users/aaronjensen/.emacs.d/elpa/org-= plus-contrib-20160718/org-eshell hides /usr/local/Cellar/emacs/25.0.95/sh= are/emacs/25.0.95/lisp/org/org-eshell
/Users/aaronjensen/.e= macs.d/elpa/org-plus-contrib-20160718/org-entities hides /usr/local/Cella= r/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-entities
/= Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-element hid= es /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-eleme= nt
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-201607= 18/org-docview hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/= lisp/org/org-docview
/Users/aaronjensen/.emacs.d/elpa/org-p= lus-contrib-20160718/org-datetree hides /usr/local/Cellar/emacs/25.0.95/s= hare/emacs/25.0.95/lisp/org/org-datetree
/Users/aaronjensen= /.emacs.d/elpa/org-plus-contrib-20160718/org-ctags hides /usr/local/Cella= r/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-ctags
/Use= rs/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-crypt hides /u= sr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-crypt
<= /div>
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-= compat hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org= /org-compat
/Users/aaronjensen/.emacs.d/elpa/org-plus-contr= ib-20160718/org-colview hides /usr/local/Cellar/emacs/25.0.95/share/emacs= /25.0.95/lisp/org/org-colview
/Users/aaronjensen/.emacs.d/e= lpa/org-plus-contrib-20160718/org-clock hides /usr/local/Cellar/emacs/25.= 0.95/share/emacs/25.0.95/lisp/org/org-clock
/Users/aaronjen= sen/.emacs.d/elpa/org-plus-contrib-20160718/org-capture hides /usr/local/= Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-capture
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-bibtex = hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-bi= btex
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-2016= 0718/org-bbdb hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/l= isp/org/org-bbdb
/Users/aaronjensen/.emacs.d/elpa/org-plus-= contrib-20160718/org-attach hides /usr/local/Cellar/emacs/25.0.95/share/e= macs/25.0.95/lisp/org/org-attach
/Users/aaronjensen/.emacs.= d/elpa/org-plus-contrib-20160718/org-archive hides /usr/local/Cellar/emac= s/25.0.95/share/emacs/25.0.95/lisp/org/org-archive
/Users/a= aronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-agenda hides /usr/= local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-agenda
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob hid= es /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-tan= gle hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob= -tangle
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-2= 0160718/ob-table hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.9= 5/lisp/org/ob-table
/Users/aaronjensen/.emacs.d/elpa/org-pl= us-contrib-20160718/ob-sqlite hides /usr/local/Cellar/emacs/25.0.95/share= /emacs/25.0.95/lisp/org/ob-sqlite
/Users/aaronjensen/.emacs= .d/elpa/org-plus-contrib-20160718/ob-sql hides /usr/local/Cellar/emacs/25= .0.95/share/emacs/25.0.95/lisp/org/ob-sql
/Users/aaronjense= n/.emacs.d/elpa/org-plus-contrib-20160718/ob-shen hides /usr/local/Cellar= /emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-shen
/Users/= aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-screen hides /usr/= local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-screen
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-sche= me hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-= scheme
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20= 160718/ob-scala hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95= /lisp/org/ob-scala
/Users/aaronjensen/.emacs.d/elpa/org-plu= s-contrib-20160718/ob-sass hides /usr/local/Cellar/emacs/25.0.95/share/em= acs/25.0.95/lisp/org/ob-sass
/Users/aaronjensen/.emacs.d/el= pa/org-plus-contrib-20160718/ob-ruby hides /usr/local/Cellar/emacs/25.0.9= 5/share/emacs/25.0.95/lisp/org/ob-ruby
/Users/aaronjensen/.= emacs.d/elpa/org-plus-contrib-20160718/ob-ref hides /usr/local/Cellar/ema= cs/25.0.95/share/emacs/25.0.95/lisp/org/ob-ref
/Users/aaron= jensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-R hides /usr/local/Cell= ar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-R
/Users/a= aronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-python hides /usr/l= ocal/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-python
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-plant= uml hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob= -plantuml
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib= -20160718/ob-picolisp hides /usr/local/Cellar/emacs/25.0.95/share/emacs/2= 5.0.95/lisp/org/ob-picolisp
/Users/aaronjensen/.emacs.d/elp= a/org-plus-contrib-20160718/ob-perl hides /usr/local/Cellar/emacs/25.0.95= /share/emacs/25.0.95/lisp/org/ob-perl
/Users/aaronjensen/.e= macs.d/elpa/org-plus-contrib-20160718/ob-org hides /usr/local/Cellar/emac= s/25.0.95/share/emacs/25.0.95/lisp/org/ob-org
/Users/aaronj= ensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-octave hides /usr/local/= Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-octave
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-ocaml hide= s /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-ocaml
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/o= b-mscgen hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/o= rg/ob-mscgen
/Users/aaronjensen/.emacs.d/elpa/org-plus-cont= rib-20160718/ob-maxima hides /usr/local/Cellar/emacs/25.0.95/share/emacs/= 25.0.95/lisp/org/ob-maxima
/Users/aaronjensen/.emacs.d/elpa= /org-plus-contrib-20160718/ob-matlab hides /usr/local/Cellar/emacs/25.0.9= 5/share/emacs/25.0.95/lisp/org/ob-matlab
/Users/aaronjensen= /.emacs.d/elpa/org-plus-contrib-20160718/ob-makefile hides /usr/local/Cel= lar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-makefile
= /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-lob hides /= usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-lob
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-lis= p hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-l= isp
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160= 718/ob-lilypond hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95= /lisp/org/ob-lilypond
/Users/aaronjensen/.emacs.d/elpa/org-= plus-contrib-20160718/ob-ledger hides /usr/local/Cellar/emacs/25.0.95/sha= re/emacs/25.0.95/lisp/org/ob-ledger
/Users/aaronjensen/.ema= cs.d/elpa/org-plus-contrib-20160718/ob-latex hides /usr/local/Cellar/emac= s/25.0.95/share/emacs/25.0.95/lisp/org/ob-latex
/Users/aaro= njensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-keys hides /usr/local/= Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-keys
/= Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-js hides /us= r/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-js
=
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-java h= ides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-java=
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718= /ob-io hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org= /ob-io
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20= 160718/ob-haskell hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.= 95/lisp/org/ob-haskell
/Users/aaronjensen/.emacs.d/elpa/org= -plus-contrib-20160718/ob-gnuplot hides /usr/local/Cellar/emacs/25.0.95/s= hare/emacs/25.0.95/lisp/org/ob-gnuplot
/Users/aaronjensen/.= emacs.d/elpa/org-plus-contrib-20160718/ob-fortran hides /usr/local/Cellar= /emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-fortran
/Use= rs/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-exp hides /usr/= local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-exp
<= div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-eval hi= des /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-eval<= br>
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/= ob-emacs-lisp hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/l= isp/org/ob-emacs-lisp
/Users/aaronjensen/.emacs.d/elpa/org-= plus-contrib-20160718/ob-dot hides /usr/local/Cellar/emacs/25.0.95/share/= emacs/25.0.95/lisp/org/ob-dot
/Users/aaronjensen/.emacs.d/e= lpa/org-plus-contrib-20160718/ob-ditaa hides /usr/local/Cellar/emacs/25.0= .95/share/emacs/25.0.95/lisp/org/ob-ditaa
/Users/aaronjense= n/.emacs.d/elpa/org-plus-contrib-20160718/ob-css hides /usr/local/Cellar/= emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-css
/Users/aa= ronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-core hides /usr/loca= l/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-core
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-comint hid= es /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-comint=
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718= /ob-clojure hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lis= p/org/ob-clojure
/Users/aaronjensen/.emacs.d/elpa/org-plus-= contrib-20160718/ob-calc hides /usr/local/Cellar/emacs/25.0.95/share/emac= s/25.0.95/lisp/org/ob-calc
/Users/aaronjensen/.emacs.d/elpa= /org-plus-contrib-20160718/ob-C hides /usr/local/Cellar/emacs/25.0.95/sha= re/emacs/25.0.95/lisp/org/ob-C
/Users/aaronjensen/.emacs.d/= elpa/org-plus-contrib-20160718/ob-awk hides /usr/local/Cellar/emacs/25.0.= 95/share/emacs/25.0.95/lisp/org/ob-awk
/Users/aaronjensen/.= emacs.d/elpa/org-plus-contrib-20160718/ob-asymptote hides /usr/local/Cell= ar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-asymptote
= /Users/aaronjensen/.emacs.d/elpa/seq-2.16/seq hides /usr/local/Cellar/ema= cs/25.0.95/share/emacs/25.0.95/lisp/emacs-lisp/seq

=46eatures:
(shadow sort mail-extr emacsbug evil-ner= d-commenter
evil-nerd-commenter-operator tabify helm-comman= d helm-elisp helm-eval
misearch multi-isearch network-strea= m nsm starttls dockerfile-mode
alchemist alchemist-macroexp= and alchemist-company alchemist-help
alchemist-complete alc= hemist-refcard alchemist-phoenix alchemist-compile
alchemis= t-iex alchemist-message alchemist-hooks alchemist-hex
alche= mist-mix alchemist-info alchemist-goto alchemist-scope
alch= emist-eval alchemist-interact alchemist-server alchemist-execute
alchemist-report alchemist-test-mode alchemist-project alchemist-fi= le
alchemist-key alchemist-utils elixir-mode pkg-info epl e= lixir-smie
company-tern dash-functional js-doc iswitchb js2= -imenu-extras
js2-refactor js2r-paredit js2r-conveniences j= s2r-conditionals
js2r-wrapping js2r-functions js2r-vars js2= r-iife js2r-formatting
js2r-helpers skewer-mode cache-table= simple-httpd tern cursor-sensor
js2-mode js cc-mode cc-fon= ts cc-guess cc-menus cc-cmds cc-styles
cc-align cc-engine c= c-vars cc-defs imenu flycheck-elm company-robe
evil-matchit= robe url-handlers inf-ruby rubocop ruby-tools sh-script
ex= ecutable yaml-mode auto-compile packed elisp-slime-nav
evil= -cleverparens evil-cleverparens-text-objects evil-cleverparens-util
paredit lispy swiper ivy delsel iedit iedit-lib multiple-cursors= -core
lispy-inline avy semantic/db eieio-base semantic/util= -modes
semantic/util semantic semantic/tag semantic/lex sem= antic/fw mode-local
cedet evil-ediff ediff-merg ediff-wind = ediff-diff ediff-mult ediff-help
ediff-init ediff-util edif= f edebug lispy-tags goto-addr bug-reference
auto-highlight-= symbol clean-aindent-mode highlight-numbers parent-mode
hig= hlight-parentheses hideshow rainbow-delimiters company-files
company-keywords company-etags company-gtags company-template
=
company-dabbrev-code company-dabbrev company-capf org-eldoc evil-org=
ob-shell org-bullets org-download url-http tls gnutls url-= auth url-gw
toc-org ert debug clojure-snippets yasnippet im= age-file org-rmail
org-mhe org-irc org-info org-gnus org-do= cview org-bibtex bibtex org-bbdb
org-w3m mu4e-maildirs-exte= nsion org-mu4e mu4e mu4e-speedbar speedbar
sb-image ezimage= dframe mu4e-main mu4e-context mu4e-view epa
mu4e-headers m= u4e-compose mu4e-draft mu4e-actions rfc2368 smtpmail
sendma= il mu4e-mark mu4e-message html2text mu4e-proc mu4e-utils doc-view
jka-compr mu4e-lists mu4e-vars mu4e-meta ox-gfm ox-md ox-latex
=
ox-icalendar ox-html ox-ascii ox-publish ox org-element avl-tr= ee org
org-macro org-footnote org-pcomplete org-list org-fa= ces org-entities
org-version ob-emacs-lisp ob ob-tangle ob-= ref ob-lob ob-table ob-exp
org-src ob-keys ob-comint ob-cor= e ob-eval org-compat org-macs
org-loaddefs cal-menu calenda= r cal-loaddefs vc-git projectile grep
ibuf-ext ibuffer rece= ntf tree-widget shackle hungry-delete
fill-or-unfill fix-au= torevert-breaking-git eval-overlay
fix-bracketed-paste comp= any-simple-complete init-terminal-cursor
evil-terminal-curs= or-changer init-org init-magit init-elixir init-deft
evil-m= c evil-mc-command-execute evil-mc-command-record
evil-mc-cu= rsor-make evil-mc-region evil-mc-cursor-state evil-mc-undo
= evil-mc-vars evil-mc-known-commands evil-mc-common hl-todo xterm-color
spacemacs-whitespace-cleanup ws-butler winner window-numberin= g etags
xref project volatile-highlights vi-tilde-fringe tm= ux spaceline-config
spaceline-segments spaceline powerline = powerline-separators color
powerline-themes smartparens-con= fig smartparens-ruby smartparens-html
saveplace savehist ru= by-test-mode pcre2el rxt re-builder ruby-mode smie
popwin p= ersp-mode osx-trash info+ image-mode ido-vertical-mode helm-mode
helm-files image-dired dired-x dired-aux ffap helm-buffers helm-els= creen
helm-tags helm-bookmark helm-adaptive helm-info bookm= ark pp helm-locate
helm-grep helm-regexp helm-external helm= -net browse-url xml url
url-proxy url-privacy url-expand ur= l-methods url-history url-cookie
url-domsuf url-util mailca= p helm-utils compile helm-help helm-types
git-gutter-fringe= + fringe-helper git-gutter+ git-commit with-editor
async-by= tecomp async tramp-sh server log-edit message rfc822 mml mml-sec
epg mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log
docker-tramp tramp-cache tramp tramp-compat tramp-loaddefs tr= ampver
shell pcomplete comint ansi-color flyspell-correct-h= elm helm helm-source
helm-multi-match helm-lib dired flyspe= ll-correct flyspell ispell
flycheck find-func flx-ido flx i= do eyebrowse format-spec
exec-path-from-shell evil-unimpair= ed f s evil-surround
evil-search-highlight-persist evil-num= bers evil-lisp-state smartparens
evil-indent-plus evil-exch= ange evil-escape evil-args evil-anzu anzu
cider-eval-sexp-f= u eval-sexp-fu rx highlight noutline outline diff-hl
vc-dir= ewoc vc vc-dispatcher diff-mode company-web dash company-css
company web-completion-data adaptive-wrap hybrid-mode
ev= il-evilified-state which-key use-package diminish bind-key hydra lv
cus-edit cus-start cus-load evil evil-integration undo-tree diff=
evil-maps evil-commands evil-jumps evil-command-window evi= l-types
evil-search evil-ex evil-macros evil-repeat evil-st= ates evil-core
evil-common windmove thingatpt rect evil-dig= raphs evil-vars ring info
bind-map quelpa url-parse auth-so= urce gnus-util password-cache url-vars
package-build mm-dec= ode mm-bodies mm-encode mail-parse rfc2231 rfc2047
rfc2045 = ietf-drums mm-util help-fns mail-prsvr json map lisp-mnt hl-line
xt-mouse autorevert filenotify disp-table wid-edit monokai-theme
finder-inf init-html init-javascript sgml-mode init-evil
<= /div>
core-configuration-layer eieio-compat cl-seq ht cl warnings pac= kage
epg-config seq eieio byte-opt bytecomp byte-compile cl= -extra help-mode
cconv eieio-core core-spacemacs core-use-p= ackage-ext
core-transient-state core-micro-state core-toggl= e core-keybindings
core-fonts-support core-spacemacs-buffer= derived edmacro kmacro
core-funcs cl-macs gv core-themes-s= upport core-display-init
core-auto-completion core-release-= management core-dotspacemacs
core-command-line core-debug a= dvice profiler easymenu cl-loaddefs cl-lib
page-break-lines= easy-mmode subr-x pcase time-date mule-util tooltip
eldoc = electric uniquify ediff-hook vc-hooks lisp-float-type mwheel
ns-win ucs-normalize term/common-win tool-bar dnd fontset image
regexp-opt fringe tabulated-list newcomment elisp-mode lisp-mode
prog-mode register page menu-bar rfn-eshadow timer select sc= roll-bar
mouse jit-lock font-lock syntax facemenu font-core= frame cl-generic cham
georgian utf-8-lang misc-lang vietna= mese tibetan thai tai-viet lao
korean japanese eucjp-ms cp5= 1932 hebrew greek romanian slovak czech
european ethiopic i= ndian cyrillic chinese charscript case-table epa-hook
jka-c= mpr-hook help simple abbrev minibuffer cl-preloaded nadvice
loaddefs button faces cus-face macroexp files text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget
<= /div>
hashtable-print-readable backquote kqueue cocoa ns multi-tty
make-network-process emacs)

Memo= ry information:
((conses 16 1068122 891337)
= (symbols 48 82031 35)
(miscs 40 6570 10733)
= (strings 32 209973 395364)
(string-bytes 1 7368564)
(vectors 16 130382)
(vector-slots 8 2505920 3469= 82)
(floats 8 1994 3740)
(intervals 56 1372= 0 14404)
(buffers 976 61))



Aaron<=21--CanarySignat= ure-->

=
--5790dc42_6b8b4567_66d0-- From debbugs-submit-bounces@debbugs.gnu.org Sun Jul 24 21:16:56 2016 Received: (at 24048) by debbugs.gnu.org; 25 Jul 2016 01:16:56 +0000 Received: from localhost ([127.0.0.1]:36161 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bRUVs-0004Uc-4u for submit@debbugs.gnu.org; Sun, 24 Jul 2016 21:16:56 -0400 Received: from mail-wm0-f46.google.com ([74.125.82.46]:37574) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bRUVo-0004UN-Tp for 24048@debbugs.gnu.org; Sun, 24 Jul 2016 21:16:55 -0400 Received: by mail-wm0-f46.google.com with SMTP id i5so135020978wmg.0 for <24048@debbugs.gnu.org>; Sun, 24 Jul 2016 18:16:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:subject:to:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding; bh=wD+cY2VeckXhORCtOKzUOIv3ZMaXpCWr/4s6ZQpnBjA=; b=qDGL11F+zY2jq+4S1hlhOVt86dVXC2rwXKXUg+W1+p5NPcZFadFbQC0PTZZ22exhSK nboB3r00/EHN3WgIqDZvfUkSJ+MQv6NCeWt5Mk4MUA/9SKK/Hm5IlF6Iat4X4fQhhNQT M/+Y1eWy4cKClAXDYaAGQCw8AEr/WSDyeYga9ufvkIv4oePTPZ2Ux33wIOIwNOszc3kW PI5iEiphkurlthFoLuwfgH5P5cXAieOZQkSP1bzFrn+TEeJ16if2XOtgTCC7OqnO+hpo mVHX//jpDUzjv8iFMWZeseHsd7W4GYQ0tP1nwZR6xd4THUcVqDjYP75uUvNBk6WnZ/Aq ExxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:subject:to:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=wD+cY2VeckXhORCtOKzUOIv3ZMaXpCWr/4s6ZQpnBjA=; b=Zdnoi34IDFqk4Rno6DCLAWMLnkqG8eFvFWV9TJYe0jZkYZb7C4ncjnKxSMfPUq3JKv d/APZjE1hkv3PV/nFNNikV1D6eSe+Dqofus/I5p+t7X92yVjMKGHHNIsgfwL7pIrSBPm kunqqB6dkSRqXLwhizlG37S5D+dJRQNiC7eFNLubsxTDAuG2Uy6MEpR4m39PN0XfB8Zk c6qEO/Q5bQmNXY9ll1STLt4wRWSwqQK7EbpgHRvhhVmj2PUMjeWVzJOCQERD26j01fk0 zrY370tFe0OuZeWsaHH3v38YpuKZdrZD2xkXb/6jZsx1iTJK6MdNFjz9F8NKuL/VR45V zvlw== X-Gm-Message-State: AEkoouuhtRctNR6PLdfvMmcb2otIPgW44Ln+2HG5ICKKoUxQUa5cioBMEgqLgB3cxy/GpQ== X-Received: by 10.28.157.148 with SMTP id g142mr18060975wme.2.1469409407247; Sun, 24 Jul 2016 18:16:47 -0700 (PDT) Received: from [192.168.1.2] ([185.105.173.135]) by smtp.googlemail.com with ESMTPSA id iw1sm13032688wjb.20.2016.07.24.18.16.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 24 Jul 2016 18:16:46 -0700 (PDT) Subject: Re: bug#24048: 25.0.95; syntax-ppss can be slow To: Aaron Jensen , 24048@debbugs.gnu.org References: From: Dmitry Gutov Message-ID: Date: Mon, 25 Jul 2016 04:16:45 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:47.0) Gecko/20100101 Thunderbird/47.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 24048 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Hi Aaron, On 07/21/2016 05:29 PM, Aaron Jensen wrote: > > In certain situations, the caching of syntax-ppss can seem to be > insufficient for good performance when syntax-ppss is invoked in a tight > loop. smartparens is a popular package that currently invokes > syntax-ppss in a tight loop (about 30-100 times depending on how many > match pairs are configured). syntax-ppss has caching built in, but it is > willing to use a cache from a further back position and do a > `parse-partial-sexp` from the old position to the current. Afterwards, > it does not set the cache with the current position. As such, in the > pathological case, it can parse ~2000 characters 30-100 times in a tight > loop. This is slow enough to show up in profiling and affect typing > latency. > > To repro, install: > > smartparens (you can use > https://github.com/aaronjensen/smartparens/tree/limit-binding-of-case-fold-search > to alleviate a different performance issue which could distract in the > profiling) > elixir-mode Is there a way to reproduce it more easier? Maybe without smartparens, just with elixir-mode, if it's sufficient to illustrate the performance problem (I recall you stating parse-partial-sexp is also unusually slow in that major mode, for some reason). Here, I'm seeing some similar behavior with elisp-mode.el. I can open this file, evaluate (benchmark 1000 '(syntax-ppss)) at line 10, then move to line 70 and do it there, and see the latter result to be much faster. They're still below 100ms usually (even with 1000 repetitions), so that's hardly a good example of a performance problem, by itself. P.S. Please send a text email next time, we very much prefer them for various reasons, inability to sneak in a tracker like this among them: From debbugs-submit-bounces@debbugs.gnu.org Mon Jul 25 03:13:00 2016 Received: (at 24048) by debbugs.gnu.org; 25 Jul 2016 07:13:00 +0000 Received: from localhost ([127.0.0.1]:36258 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bRa4S-0004ai-3A for submit@debbugs.gnu.org; Mon, 25 Jul 2016 03:13:00 -0400 Received: from mail-it0-f48.google.com ([209.85.214.48]:35234) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bRa4Q-0004aU-F3 for 24048@debbugs.gnu.org; Mon, 25 Jul 2016 03:12:58 -0400 Received: by mail-it0-f48.google.com with SMTP id u186so78804227ita.0 for <24048@debbugs.gnu.org>; Mon, 25 Jul 2016 00:12:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=9uFEWcn7modH+h2pBeP/bJN64C29CqKb7P1voQFkO7Y=; b=A9i3H/+yA/sfuXTo258r4BrhHAGjozKKBNEPtWqTFe+IbgtEwLZzUhBh8n82i61h8K Txl+ASnuxJ4W9+3Deig0VWjAeHJ+JqDBmneN1d76kKBx5GVOiCcbvNz8tkatYjjJO4om plo+RJ3x1pvgiNL0arJVmBrR1SLhqoZI1zqzHYiq/KMbnRYKkBd89IROS/xs3PreJoVU B9/dxQNzY+azp+e7W5KzfhNSMaD1u0eRPN6P0aILGE+UGJwL4T+j/PfDZhEtA87CujFw egfymvkYfZk6vo809qe7suY2yFlwZyliitVp04qV/cXrRPB04c/vhDcCKU4O0yIvshYl 1hWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=9uFEWcn7modH+h2pBeP/bJN64C29CqKb7P1voQFkO7Y=; b=bnoAJvaYX4tbxznwi1FPuZ8jyj6WeMWuJ0sZsKNT9qDEmtlhBDzjh7sYxQw06svXN+ 6aksaMv83bxmE02zhudKh2XXwTArZL/ltt+v7JzimVTmRFst+wf7B+oIcIPraWahh8Gm wTAp7mBdAIJyu4i7l5UR8KHZPFjUgCRMb20FL/NSyudm40/5cpqjYqYo3W8lz9fiqHEN hpUq3QaWuZdmglFYHSWhyjbc4++igkPm89pKKAv+TBdUd8dV6EQNzpAvGKtE5Txv9wqa dnGfa03ZL9TdB5updj8FFcLIedL7pX+18FAhaG1CdI9ZZcWb9MDS6jIV4H01NqmemTO8 /udw== X-Gm-Message-State: AEkoouuGRYboaSbIHkSA9ZqBjagAgbRWcTgCNkaGcrUnJ0R0CHRI15L77Hf4821tPn3fsi0F+6AnUdlnLAS+TA== X-Received: by 10.36.142.129 with SMTP id h123mr19432661ite.66.1469430772710; Mon, 25 Jul 2016 00:12:52 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Aaron Jensen Date: Mon, 25 Jul 2016 07:12:42 +0000 Message-ID: Subject: Re: bug#24048: 25.0.95; syntax-ppss can be slow To: Dmitry Gutov , 24048@debbugs.gnu.org Content-Type: multipart/alternative; boundary=94eb2c04a0d23acfc105387083cc X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 24048 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) --94eb2c04a0d23acfc105387083cc Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi Dmitry, On Sun, Jul 24, 2016 at 6:16 PM Dmitry Gutov wrote: > Is there a way to reproduce it more easier? Maybe without smartparens, > just with elixir-mode, if it's sufficient to illustrate the performance > problem (I recall you stating parse-partial-sexp is also unusually slow > in that major mode, for some reason). > Sure, just use elixir-mode and this file https://gist.githubusercontent.com/aaronjensen/d4cd40347a916dd36c8239afecf6= 4a7d/raw/b52440bb51b96193a365a7f4cc1c8733ba98476f/syntax-ppss-slow-repro.ex Then do: (benchmark 100 '(syntax-ppss)) at the top of the file and compare it to doing it within the `chunk_by` function at the bottom of the file. For me it=E2=80=99s 0.2ms at the top and 5.6ms at the bottom. Smartparens c= an do 50-100 syntax-ppss calls for every self-insert-command, and 5.6ms is significant latency to add on to every keypress. I have a proposed pull to get smartparens to memoize syntax-ppss itself https://github.com/Fuco1/smartparens/pull/629 but in theory it should be redundant given syntax-ppss=E2=80=99s built in caching. P.S. Please send a text email next time, we very much prefer them for > various reasons, inability to sneak in a tracker like this among them: > Unfortunately, modern email clients don=E2=80=99t really offer this as an o= ption anymore. I started to set up mu4e but it just became too much work to set up for the sole purpose of being able to send text emails to report emacs bugs. This probably isn=E2=80=99t the place to debate the merits of easy fo= r most people to use bug reporting. src=3D3D=3D22h=3Dttp:// > pixels.canarymail.io/tracking/07C7B5E0-9441-40AD-9CC3-D2A176741827.=3Dpng= =3D22 > id=3D3D=3D22141121424AC1=3D466A74CBB8A45B347C37B=3D22 style=3D3D=3D22widt= h: 1p=3Dx; > height: 1px;=3D22> > Yeah, canary isn=E2=80=99t even the client I=E2=80=99m using anymore, it=E2= =80=99s just what emacs happened to open when I told it to open my email client to send the bug report. Unless Inbox is doing its own weirdness this mail should be tracking pixel free. --=20 Aaron --94eb2c04a0d23acfc105387083cc Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi Dmitry,

On Sun, Jul 24, 2016 at 6:16 PM Dmitry Gutov <dgutov@yandex.ru> wrote:
Is there a way to reproduce it more easier? Maybe without smartp= arens,
just with elixir-mode, if it's sufficient to illustrate the performance=
problem (I recall you stating parse-partial-sexp is also unusually slow
in that major mode, for some reason).

Then do:=C2=A0(benchmark 100 &#= 39;(syntax-ppss)) at the top of the f= ile and compare it to doing it within the `chunk_by` function at the bottom= of the file. For me it=E2=80=99s 0.2ms at the top and 5.6ms at the = bottom. Smartparens can do 50-100 syntax-ppss calls for every self-insert-c= ommand, and 5.6ms is significant latency to add on to every keypress.=C2=A0=

I have a proposed pull to get smartparens to memo= ize syntax-ppss itself=C2=A0https://github.com/Fuco1/smartparens/pull/629=C2=A0but in th= eory it should be redundant given syntax-ppss=E2=80=99s built in caching.

P.S. Please send a text email next time, we very much prefer them for
various reasons, inability to sneak in a tracker like this among them:
<= /blockquote>

Unfortunately, modern email clients don=E2= =80=99t really offer this as an option anymore. I started to set up mu4e bu= t it just became too much work to set up for the sole purpose of being able= to send text emails to report emacs bugs. This probably isn=E2=80=99t the = place to debate the merits of easy for most people to use bug reporting.

<img
src=3D3D=3D22h=3Dttp://pixels.canarymail.io/tracking/07C7B5E0-9441-40AD-9CC3-D2A176741827.= =3Dpng=3D22
id=3D3D=3D22141121424AC1=3D466A74CBB8A45B347C37B=3D22 style=3D3D=3D22width:= 1p=3Dx;
height: 1px;=3D22>

Yeah, canary isn= =E2=80=99t even the client I=E2=80=99m using anymore, it=E2=80=99s just wha= t emacs happened to open when I told it to open my email client to send the= bug report. Unless Inbox is doing its own weirdness this mail should be tr= acking pixel free.
--
Aaron
--94eb2c04a0d23acfc105387083cc-- From debbugs-submit-bounces@debbugs.gnu.org Mon Jul 25 08:42:31 2016 Received: (at 24048) by debbugs.gnu.org; 25 Jul 2016 12:42:32 +0000 Received: from localhost ([127.0.0.1]:36370 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bRfDL-0005Rk-NH for submit@debbugs.gnu.org; Mon, 25 Jul 2016 08:42:31 -0400 Received: from mail-wm0-f45.google.com ([74.125.82.45]:37857) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bRfDK-0005RX-Lk for 24048@debbugs.gnu.org; Mon, 25 Jul 2016 08:42:31 -0400 Received: by mail-wm0-f45.google.com with SMTP id i5so154831130wmg.0 for <24048@debbugs.gnu.org>; Mon, 25 Jul 2016 05:42:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:subject:to:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding; bh=gwGtqI9wL4EXy5nInESWqICd6ZGutrxmAFdnXzBF0jI=; b=FnVbGYKOAx/2p5oJzs6cNB67kcx7H5/YimDvPPoX5pJKurylqnhC0ds+8tfoCLoogw Z5oOlYbCYRc42CaibxcHfPC1ukANgbn/DMdfXIRG5alEkPfTJtFidQbvwljnI9sLrPm+ gL/+am4rgfwrXcwqaaGlVmNQK9RTOP5hO4PdXd3BntcftaFblQYcxq/vR7IMLHLzFYkL 7j12xEpMgsFVdC1cUa4WqOXPSaxzUZouEwTxXWxH3unwxzjFcnJc0fF2fjbtI3ObNYT2 /Y9MwzVpqnsjXD8Ys1EoTPfJRTxYrZ2Cklk0+bCUwJIdLO1ErSd4YJwJsw/4wS56wMZs nNqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:subject:to:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=gwGtqI9wL4EXy5nInESWqICd6ZGutrxmAFdnXzBF0jI=; b=J3BFQ9m2Yw5W3xG2ZbE4T8HDlRHG5oFx9VisTDx8fyoDti3Fo1QfcUtkhfuNCiqL4m ABp3IObicHeB2UbUH6zXCiAE00PWo0d7Wy0jwox56nWdpmN3OVR1lOmh6EMDV1biCsv4 +zOELSz0BDVE+sPZ9CVFIp6YXFkNoC0T6cEzjdSuC8jvEHqL4JgUMhk/TDwg9PA/JkKd kr7HXxYzT0DiO4SSb4Li3HZFKYkV3KSL9wTpwt1gYZjCmYyVZsDs+uex41nTD8failhg qUQ7GWQHGdsQqPJowN/bX9kzE0il5HMq0xffURnx6DExP9ZbV7MHH7kn89erj3Yh0TFA I/dg== X-Gm-Message-State: AEkoouvXV+OgCVwGvaRAJpr+pZRJCUbPqomIU0wXOJscFwdVe4FlZjrmV3ju/4F9MXBYoA== X-Received: by 10.194.127.37 with SMTP id nd5mr15177935wjb.156.1469450544988; Mon, 25 Jul 2016 05:42:24 -0700 (PDT) Received: from [192.168.0.185] (static-nbl2-118.cytanet.com.cy. [212.31.107.118]) by smtp.googlemail.com with ESMTPSA id t188sm27276254wme.19.2016.07.25.05.42.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 25 Jul 2016 05:42:24 -0700 (PDT) Subject: Re: bug#24048: 25.0.95; syntax-ppss can be slow To: Aaron Jensen , 24048@debbugs.gnu.org References: From: Dmitry Gutov Message-ID: Date: Mon, 25 Jul 2016 15:42:22 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:47.0) Gecko/20100101 Thunderbird/47.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 24048 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) On 07/25/2016 10:12 AM, Aaron Jensen wrote: > Sure, just use elixir-mode and this > file https://gist.githubusercontent.com/aaronjensen/d4cd40347a916dd36c8239afecf64a7d/raw/b52440bb51b96193a365a7f4cc1c8733ba98476f/syntax-ppss-slow-repro.ex > > Then do: (benchmark 100 '(syntax-ppss)) at the top of the file and > compare it to doing it within the `chunk_by` function at the bottom of > the file. For me it’s 0.2ms at the top and 5.6ms at the bottom. > Smartparens can do 50-100 syntax-ppss calls for every > self-insert-command, and 5.6ms is significant latency to add on to every > keypress. Is 5.6ms really significant? You should be typing like 200 characters per _second_ to really notice the difference. Even 12ms that I'm getting at the bottom of your example file doesn't sound like it should have effect on the perceptible latency. From debbugs-submit-bounces@debbugs.gnu.org Mon Jul 25 11:08:29 2016 Received: (at 24048) by debbugs.gnu.org; 25 Jul 2016 15:08:29 +0000 Received: from localhost ([127.0.0.1]:37093 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bRhUb-0000ac-8Q for submit@debbugs.gnu.org; Mon, 25 Jul 2016 11:08:29 -0400 Received: from mail-io0-f182.google.com ([209.85.223.182]:33305) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bRhUZ-0000aP-Kt for 24048@debbugs.gnu.org; Mon, 25 Jul 2016 11:08:28 -0400 Received: by mail-io0-f182.google.com with SMTP id 38so164021506iol.0 for <24048@debbugs.gnu.org>; Mon, 25 Jul 2016 08:08:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=OOuoPrKbwnO4zfKsObM+dlUl7sNVMihMzd4Xn46bW8E=; b=qXVfbXm98pkcNDpWmBl5sj0ktNBTAK84aGM72FR3DNh6BLROtnfMULPp6hzOET16jK 8hyUo6cfEO9hykCE7vk6DQe5XvpAFo+VPXCwrNE19ZI9N8aIU5F3zjrRZ47pShxQpzRM +epfias1A6tGXX17HZHBLDBh7lCmCTp29kQmt0YBVF9XlRiI4ivZ0h7ThdE8aAQDRQbK m/2LgXJELNxVybFMV6AzV9kBS3CzWlKXPCtEOppkH8oeTffP7V1iWtjaccmgdJoqujTi wJXJD8EB/QgCesLEB53FYNRoevVcX77Od+RZLH5Y+Rvo1ONfHYafiv5QXAecQH9kbHbk FccQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=OOuoPrKbwnO4zfKsObM+dlUl7sNVMihMzd4Xn46bW8E=; b=Bqw9ytGXLuKynKluqjMIPJfOqPloyKz3ro+CMgvXK9L+wpO8vLk5J35ICTTmzaMr0K 6JeL9fHpl8aEV5t8smd49Cw3SmujRj5rfXla1/x4vpFPFEZjMAxIqxaX85VLS+sdcjJG RFAIhRxhdrdE3Z48EpTwYfjYIdFNquetoHB5XAll6qyZhfkHw8ZzYunvVIRvSOGNx6HP 9U2dct4pg9msTF7iQ4iyQfz1XyjSbq6xATHKOmro5ugpd04gj2Bq7Gewf9wDBY0xN97r 3xwEokqbgA5x+WT4M9m7J7fiJ0RlAfnsgS00mWA99bsWAu+37f3RgOSPTlSPe48PfF/e PY1A== X-Gm-Message-State: AEkoousVtt5wYss1WwTiu70hOoTxBd8G1nO2iQzAzRky7iSY7LrcW8wj4XVx++wPu6ucY7HuAXfsm1OnVPCyAQ== X-Received: by 10.107.175.27 with SMTP id y27mr22876521ioe.137.1469459301883; Mon, 25 Jul 2016 08:08:21 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Aaron Jensen Date: Mon, 25 Jul 2016 15:08:11 +0000 Message-ID: Subject: Re: bug#24048: 25.0.95; syntax-ppss can be slow To: Dmitry Gutov , 24048@debbugs.gnu.org Content-Type: multipart/related; boundary=001a114644cab416cc0538772744 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 24048 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) --001a114644cab416cc0538772744 Content-Type: multipart/alternative; boundary=001a114644cab416c80538772743 --001a114644cab416c80538772743 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Mon, Jul 25, 2016 at 5:42 AM Dmitry Gutov wrote: > Is 5.6ms really significant? You should be typing like 200 characters > per _second_ to really notice the difference. > > Even 12ms that I'm getting at the bottom of your example file doesn't > sound like it should have effect on the perceptible latency. > That=E2=80=99s a totally fair question, but yes, I can feel the difference = while typing. Ever since switching to Emacs I could feel significant latency in my setup so I=E2=80=99ve been on a quest to bring it down. That quest led m= e to smartparens and first to that case-fold-search binding issue and now here. Even if one can=E2=80=99t feel 5.6ms, it becomes another brick in the bag, = i.e. if another minor mode did something similar and added another 5.6ms. With enough of them most people could probably feel it. If you haven=E2=80=99t read it, I recommend looking over https://pavelfatin.com/typing-with-pleasure/ He has a tool on there for measuring typing latency. Here is a histogram of the difference between typing at the bottom of the sample file, the top, and the bottom with memoizing syntax-ppss in smartparens: [image: Bottom VS Top VS Memoize Bottom.png] --=20 Aaron --001a114644cab416c80538772743 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On Mon, Jul 25, 2016 at 5:4= 2 AM Dmitry Gutov <dgutov@yandex.ru<= /a>> wrote:
--
Aaron
--001a114644cab416c80538772743-- --001a114644cab416cc0538772744 Content-Type: image/png; name="Bottom VS Top VS Memoize Bottom.png" Content-Disposition: inline; filename="Bottom VS Top VS Memoize Bottom.png" Content-Transfer-Encoding: base64 Content-ID: <1562297dbb9eb29b1d61> X-Attachment-Id: 1562297dbb9eb29b1d61 iVBORw0KGgoAAAANSUhEUgAAAcIAAAESCAIAAADhREI9AAAMMElEQVR42u3dUZLbthJAUa3PC0vN frxA5sMfiUwRbAANECLPrdSr1DgWRUo6AjV67NcmSero5RBIEkYlCaOShFFJwqgkCaOShFFJwqgk YVSS1Mno673CDyUJo58Z7fwPJAmjDJWkjJN6jEpSNaMFNBkqSfmM/iNpVr9//RT+cXw6G85oZCla dT8k1VZm1PFZ/bNRjEoYVfVqtDaMShjFKEYljAqjEkaFUUkYxagkjGIUoxJGhVEJo8KoJIxiVBJG MYpRCaPCqIRRYVTCKEYxKgmjGMWohFGMYlTCqMYxur/e6Ol0ZYxKGMXoG5ofSS1IilEJoxj9D0qM ShhVPqPl83qMShjF6JuYH0/zMSphFKMnjB5NtfvIq6GskgHLBiyfLEtPf2g1KlmNWo2eMBr5thNG JYxitDeMShjFKEYljAqjEkaFUUkYxagkjGIUoxJGhVEJo8KoJIxiVNJgRn+Kf+zoYVQSRjEqCaMY xaiEUWFUwqgwKmEUoxiVhNGbM3o0RASjEkYxGjJ0P9IOoxJGtbVNBv24PsWohFGMYlTCqLIZPRqw jFEJo4oyejRg+SOjhrJKiwxYLjPq6C0xYNlqVLIa1dY5YLn8tSeMSrdk1AX6GhltCKMSRjGKUQmj GMWohFGMYlQSRjEqCaMYxaiEUYxiVMIoRjEqCaMYlYRRjGJUwihGMSphFKMYlTCKUYxKwihGMSph FKMYlTCK0XRGP15XNHKxUYxKGMXoB1KDP8SohFGMYlTCKEaTGD2aZ+ekXsIoRq1GJYxidDFGDWWV bj9gubxdA5atRiWrUavR1NWoLzxJGMVo2mq0NoxKGMUoRiWMYhSjEkYxilFJGMWoJIxiFKMSRjGK UQmjGMWoJIxiVNKljBb/6m+MYlTCKEYx+l7PQy5hFKMYxaiEUYxiVMIoRjEqYRSjGJUwitG5jJYv LTrteqMXMkpwYRSjaavRj1PtMCphFKMtjP75d4x6JQujGI0yul+KYhSjwihGo4x+NBSjGBVGMRpi dG/l672/6BxR+SEfOmT1wk1L4wYs9zyxDViuY7S83rQatSCS1ajVaMUXnj4uSzEqYRSjo8KohFGM YhSjwihGMYpRYRSjGMWohFGMYlTCKEYxilFhFKMY3Tfu2SZhFKMYxagwilGMYlQYxShGMSphFKMY lTCKUYxiVBjFKEYxKoxiFKMYlTCKUYxKGH0Oo4XpyuXhoBiVMIrRw9F15Qs2Y1TCKEZLaEYMxaiE UYyeMFo+o8eohFGMlhiNzFjGqIRRjJ6f1N9gwPK4ObSSAcsGLFczajUqWY1ajW778/f9d5tOv+2E UQmjGO0NoxJGMTqP0Qstw6gwilGMYlQYxShGMSphFKMYlTCKUYxiVBjFKEYxKoxiFKMYlTCKUYxK GMUoRjEqjKZuF6MYxagwilGMYlQYxShGMSphFKMYlTCKUYxiVBjFaDOj6dcbxageWOezC6NfzOiI q99jVBjFKEYxKmEUo07qMSqMYtRqFKPCKEa/mNFvnHJswLKuqvPZteaA5fJ2nztg2WrUalRWo1aj PhvFqDCK0ZUYjYRRCaMYxShGhVGMYhSjwihGMYpRYRSjGMWohFGMYhSjwuh128UoRvXEhj67MIpR jAqjGMUoRiWMYhSjGBVGMYpRjAqjGMUoRoVRjGIUoxJGMYpRjAqjGMUoRoVRjK7PqOuNYlQYxWg7 o65+j1FhFKMYxagwilGMLs9o+dm27Gv7gZz13PKFpmAUo09/077rEqk5ptjlzl0e+gSbx6iRuZLu 0fetRnO7atN22S7b5Qfu8ipfePJss8t22S4/i1GH3i7bZbtslzFql+2yXbbLazMqSU8Io5KEUUnC qCRhtHLDx9+XKvz89FtWPZs+uv3X/0rfbuGWX+91bnd/I6M3/fEWTm828VAXNl3Y6/nbLT/txz3K KQe8vN1BG408l0Yzcj2jf/ah6qkc/M5/86aDt9nzbNv/9fJO5T7Sf91m/Him3I3gEz3rUT7d5arn 5NBdzhK87VFO1uR9u5F1UvqjPIeRhU7qj15FE/a/wNkgRk+3uyajg57lCzKa/9IKP6DjBJ/8BAu+ rEYzOo0RjL4+bnf0uqz5pH7QU20Oo/F10P9f/+mbnnBm3bwUHQpK4QOl3I8y4gcz9wO6o5fzExkt rxpGM3q6ZhkByswz64ZNTzb0r8dixJvWgrtctVhufp8u/9GEp/f8c47nMlpYL0w7qR/6EdJVjLYd z0GQjf4Yuud4jrP79DceKavC9OfANzI6jZFFT+ovXI3O+QjpEkbbjueNDR3HaM/Nzn/buCWjk3f5 Skbb3jHSvyRRvvHg+9uc7U7e5SxG99s9+uGgj8yONj3/UW572WftcuH1NeLrdOVHeZv+haf0TS+0 GpWkG4RRScKoJGFUkjAqSRiVJGFUkjAqSRiVJIxKkjAqSRiVpG9n9Pevn8I/DqIkjCYzmn7Z9iWO VPdVcI4OUWT41zoHoTw3LXKFugt3p2ekXe2zev/4Nl9EKjKX4X6vOIy2XEbzrs+AyLXcp03pmfC+ Ernm/Ap7VDV8ofY9NXKt1apLr8av5E/SmzNauBhi/GqY+1vIxe7oxvdTD6veA3rm/9S+3grHJ3iN 0R5Kgj8PbqI86GK/ymu7/7X3LYXRqgOOUYzW/XALjOUaMUamfOOdm55wXfT4LmzhSYqJ7wo9VBV2 oe2EpnxnUiYR5F6qOXiXGHorRhtWPSn/ccopXnnrKa/bQYzGj08zoz2TNZtPIxIZjcywzJom33AN /OYD67NRq9F8Rl/FFmE0dzBR8GCeDpYYujtVgz8L78e5D8eI1WhkqZjCqJN6jD56NTqZ0cST+v5X b9tJfRaj2+DPRjGKUYzOYDTrhG4FRtMNbWC0+YOCU+wGMTrow2iM3ofR8rcLg6+W4NzKFRgNft+w dqzx6YTFnpP6wmeLkaHqtfvY8HlC8NDt96X2/h9B3Hz/4/My2w5C8/d2dRmjWusxu9dLJXNc+BVH hlzyDGDod+/OtQsxhgqjkoRRScKoJGFUkjAqScKoJGFUkjAqSRiVJGFUktZg9Kd4bRIHURJGMxkN Xib54t0eNubz9C+uc0BqL9cUORQr3P/IA137/EwZ8/ml42B15Wr0ls+D2jGNRz9f7eA0XHhwqaml tQOT+6/12f+AfuM4WC3BaHne543HfLZdX/2SMZ9ZlxMuP/TjxnxGMEpndJsyolkYPZ/3ud16zGft y+yqMZ+1J6rNq92sMZ9b/aXsa9+2Z475xChGWxhNf/ZcMhEksr6o+jAuvlS8ZMxn/8nshGnJiYu+ aWM+MYrRIYx+xZjPLXVgzuVjPgcxlD7m8+gtLf6mNXk+Xe5/JozeZzVaK2w/o0PHfKYzOmjMZ8rd w6juwOg9piXfj9FEg0aM+bzkNzmdb//p42D1OEa3ub+pb2a0YUxj5OQ6Ph90W2PM5+k7QdVv1YeO +Ww4jJF9LD9wbWM+I2+xJn3ekNGx9+DZTxQj6pY6MtgSRhn63btjzKcwKkkYlSRhVJIwKkkYlSSM SpIwKkkYlSSMShJGJUlNjP4qXpvEQZSE0WRGey4MXnfv+272ltfRuWTo6bbYMMvI0NOVd+f0quSJ oxamDT298WWrRjG6v6TY4uIExyht972ARfPQ061yzNQi7yunu7Pm0NPIfeu8qum4oad3fRFdw2j5 qqO1f2srXsuy/2KUH9+oO/elHztDT7e+KzePmI9SPhvLGnq69c19abjx3KGnGK04qd//b/n10DAI s/wkaJgEtzVdar52X/pP9yIHKnfoaS6jVw09HfFSnzz0NL6U7hlmlbu8xeg8Rjt1i3tX/rAmhdFx nwYsOK1v6xj+MX/oafrs6OBb+MzhibVvn4aefiWj5bObZkZrhzGMW422Ub7s0NPgayPI3ApDT3Nf 7dOGnjb8UcNDP3Ra3y1/tTD2N/Wd59fNujV8+HUVo+uvRhPHNaccQENPv5fR2/569h6Mtq2hMJr4 ImwD4oGMpgw9jX/G0vmJBEOvZzRyut1wonf0kVx5fGPwXGw7+P1+w71akNGeoadZJ+ArDD1t+Dho kaGnwfsWfDhmDj298cRT/2dQDXtuGdi30pExsA+jYuh3746hpxiVJGFUkjAqSRiVJIxKkjAqSRiV JIxKEkYlCaOSJIxKEkYlCaOS9Kz+BfZTgtX3gXq0AAAAAElFTkSuQmCC --001a114644cab416cc0538772744-- From debbugs-submit-bounces@debbugs.gnu.org Fri Mar 30 09:09:53 2018 Received: (at 24048) by debbugs.gnu.org; 30 Mar 2018 13:09:53 +0000 Received: from localhost ([127.0.0.1]:59550 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f1tmz-00051v-64 for submit@debbugs.gnu.org; Fri, 30 Mar 2018 09:09:53 -0400 Received: from mail-qk0-f181.google.com ([209.85.220.181]:45328) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f1tmx-00051i-Hx for 24048@debbugs.gnu.org; Fri, 30 Mar 2018 09:09:51 -0400 Received: by mail-qk0-f181.google.com with SMTP id s9so9025785qke.12 for <24048@debbugs.gnu.org>; Fri, 30 Mar 2018 06:09:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-transfer-encoding; bh=3AIXvkpNrG5S8Kf7pWxAkrrgnmARnB1A66eYwOha3Tk=; b=mYArbIUq4U23IQ9MOezeGRBMvmpDEz/twqZAWDP31Ww+cXvlnbvNc6qVORko92zJZn FBXIc8Q1d0AkXnPAocSZRE1zlu7ZvbY5+dLsmqtqyJeA9VuidVahvihcO9pBa8xwArGP MSmh4ott0T4cUjcsgBTb0BNbYyIxk7z4qrkR4oEgk0kiqJl8grxSm+XKCvyvj9sv3Emb j4UcRMiBkh6MrlEs4MKOHMnY9L5dhD2XFFztk8Lyx5tGS7ReWsicyJpwJwpLHZ37pqwn zidXQwlnLe+jKOXeWkFZk1k10bGaEH1vhqNGqaune1lZbEGnd+9FhQjYTm/SW74Ag96w h3Sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:content-transfer-encoding; bh=3AIXvkpNrG5S8Kf7pWxAkrrgnmARnB1A66eYwOha3Tk=; b=cSZimCO0juIO4Vp6Gg8vcEQF+lteIto0eIfqjpSt79qUY/7v2IRJ8qKuEVMmz3JzEL 5lxoWsh4j5tgmVypFF3xEsfDmqrWV4INCMzej/5P2Ubb7CSQmerBB3jxTkctt26Dn09h WDFqvXJwaprr+WFPmIB5idTQwOLHyNkXjpz5KfEDs0Ayf2G9igMwf2aNzHIspt1XCLVz /UOi38PqsAG1gxdcdPTsKQj4pNkdeTv4q4nhayCssNLmSpjnjFJosgz3QsNfz8bosKZL yVZyiAEuOckqP7nsUNDtNhmhftrKUllYhIwx6CdDf0uESY/rpiqhvUjBtRJE1b6HYf+j xOxA== X-Gm-Message-State: AElRT7HO/WPwAwKAgXaV3d+zm23GAeXyKL+fGh8kSmuccb0PFzfw9BGg mJ7o0pKawtmTQOys5qkonbDY/UV3M3H0F1qSI/E= X-Google-Smtp-Source: AIpwx48iUppxfMr9bXJaRmOfxAvbB0Cmb04RJot7VB0aBXd5jh/mvA417md6LCl619nWkRwvFNEOQn8gcVC8SscEaJw= X-Received: by 10.233.221.2 with SMTP id r2mr16581550qkf.259.1522415386197; Fri, 30 Mar 2018 06:09:46 -0700 (PDT) MIME-Version: 1.0 Received: by 10.237.60.76 with HTTP; Fri, 30 Mar 2018 06:09:45 -0700 (PDT) In-Reply-To: References: From: Aaron Jensen Date: Fri, 30 Mar 2018 06:09:45 -0700 Message-ID: Subject: Re: bug#24048: 25.0.95; syntax-ppss can be slow To: Dmitry Gutov , 24048@debbugs.gnu.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 24048 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) On Mon, Jul 25, 2016 at 8:08 AM, Aaron Jensen wrote= : > On Mon, Jul 25, 2016 at 5:42 AM Dmitry Gutov wrote: >> >> Is 5.6ms really significant? You should be typing like 200 characters >> per _second_ to really notice the difference. >> >> Even 12ms that I'm getting at the bottom of your example file doesn't >> sound like it should have effect on the perceptible latency. > > Even if one can=E2=80=99t feel 5.6ms, it becomes another brick in the bag= , i.e. if another minor mode did something similar and added another 5.6ms.= With enough of them most people could probably feel it. Hey all, I'm trying to clean up bugs I've submitted. This one is still an issue of sorts. I've fixed the downstream usage of syntax-ppss by memoizing it, but that feels like it should be unnecessary given that syntax-ppss is meant to do its own caching. The problem here is that syntax-ppss will not update its cache if it is "close enough" to the old position. In languages like Elixir (and probably Ruby) the old position is often the beginning of the outer module which spans most, if not all of the file. This means that the further you get down the file, the further you get from the old position and the more work syntax-ppss must do. If a user of syntax-ppss is not careful (as was the case in smartparens) then syntax-ppss can be called multiple times in succession, which can add up to enough latency to be noticed. Ultimately, it seems like it may be worth reconsidering this condition: (and old-pos (< (- pos old-pos) ;; The time to use syntax-begin-function and ;; find PPSS is assumed to be about 2 * distance. (* 2 (/ (cdr (aref syntax-ppss-stats 5)) (1+ (car (aref syntax-ppss-stats 5))))))) But I do not know what other impacts that may have. Does anybody have any new thoughts on this? Thanks! From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 01 14:47:54 2021 Received: (at 24048) by debbugs.gnu.org; 1 Dec 2021 19:47:54 +0000 Received: from localhost ([127.0.0.1]:45748 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1msVa6-0005ps-4h for submit@debbugs.gnu.org; Wed, 01 Dec 2021 14:47:54 -0500 Received: from quimby.gnus.org ([95.216.78.240]:57800) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1msVa4-0005pH-Qx for 24048@debbugs.gnu.org; Wed, 01 Dec 2021 14:47:53 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=sGGWBEFOnaYcxOBM6Ih38MVEjOBqmkbwp4NTuIFK9H8=; b=A/V4pUMk5RHXulAAVSDK6SR1+M vWFCYHbjYA2iZipkWPeGjvZIyiXSyks+Jo8+PgMh4RME1ILW6kCA/thVaWPo5rjE6B/DSGP5ujXn8 K9LeUAEhvIz/KOMLHXnTPOe9H1R3ceoj/qVqCnCTIMNdGTOVQ3190o6VGKYiDWr826q4=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1msVZw-00028B-LA; Wed, 01 Dec 2021 20:47:47 +0100 From: Lars Ingebrigtsen To: Aaron Jensen Subject: Re: bug#24048: 25.0.95; syntax-ppss can be slow References: X-Now-Playing: Hyd's _Hyd_: "The Look on Your Face" Date: Wed, 01 Dec 2021 20:47:44 +0100 In-Reply-To: (Aaron Jensen's message of "Fri, 30 Mar 2018 06:09:45 -0700") Message-ID: <87o860f6ov.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: Aaron Jensen writes: > Ultimately, it seems like it may be worth reconsidering this condition: > > (and old-pos (< (- pos old-pos) > ;; The time to use syntax-begin-function and > ;; find PPSS is assumed to be about 2 * d [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 24048 Cc: 24048@debbugs.gnu.org, Dmitry Gutov X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Aaron Jensen writes: > Ultimately, it seems like it may be worth reconsidering this condition: > > (and old-pos (< (- pos old-pos) > ;; The time to use syntax-begin-function and > ;; find PPSS is assumed to be about 2 * distance. > (* 2 (/ (cdr (aref syntax-ppss-stats 5)) > (1+ (car (aref syntax-ppss-stats 5))))))) (I'm going through old bug reports that unfortunately weren't resolved at the time.) This bit is now: (if (and old-pos (< (- pos old-pos) ;; The time to use syntax-begin-function and ;; find PPSS is assumed to be about 2 * distance. (let ((pair (aref syntax-ppss-stats 5))) (/ (* 2 (cdr pair)) (car pair))))) I.e., the last clause is gone. I don't know whether this affects the issue you were seeing, though. Is syntax-ppss still mis-caching things for you? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 01 14:47:59 2021 Received: (at control) by debbugs.gnu.org; 1 Dec 2021 19:47:59 +0000 Received: from localhost ([127.0.0.1]:45751 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1msVaB-0005qF-Bb for submit@debbugs.gnu.org; Wed, 01 Dec 2021 14:47:59 -0500 Received: from quimby.gnus.org ([95.216.78.240]:57816) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1msVa9-0005pb-Mf for control@debbugs.gnu.org; Wed, 01 Dec 2021 14:47:57 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Subject:From:To:Message-Id:Date:Sender:Reply-To:Cc: MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=6qeJzdZBKRbr8yFNjT14pr3bRI0CVvyf4uOjBtFlg3M=; b=pte4hL5s0iQHMUSwbGCykBAom8 Qz/GLi4ukzyLjEYfsOm/pSeXpwFUWJSZKPnHMrDhMgRKYxRHyf3u2MfL6LYlS9N//oln9wRGsXc94 fwXu8b0/og9zfhlKl7/iTyfMoaR64NCtDsmHp4YE80B2RM3riZuk5vUiXKLNlwS7PDH8=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1msVa1-00028M-W0 for control@debbugs.gnu.org; Wed, 01 Dec 2021 20:47:52 +0100 Date: Wed, 01 Dec 2021 20:47:49 +0100 Message-Id: <87mtlkf6oq.fsf@gnus.org> To: control@debbugs.gnu.org From: Lars Ingebrigtsen Subject: control message for bug #24048 X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: tags 24048 + moreinfo quit Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) tags 24048 + moreinfo quit From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 02 21:38:26 2021 Received: (at 24048) by debbugs.gnu.org; 3 Dec 2021 02:38:26 +0000 Received: from localhost ([127.0.0.1]:49815 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1msySv-00047e-VG for submit@debbugs.gnu.org; Thu, 02 Dec 2021 21:38:26 -0500 Received: from mail-pf1-f172.google.com ([209.85.210.172]:35459) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1msySu-00047P-Dd for 24048@debbugs.gnu.org; Thu, 02 Dec 2021 21:38:25 -0500 Received: by mail-pf1-f172.google.com with SMTP id p13so1496663pfw.2 for <24048@debbugs.gnu.org>; Thu, 02 Dec 2021 18:38:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=vjVDzTkF+F3tiiHoVw1K8hrvkA9MZvnYynfMbBBmo/Q=; b=IW+mzljHxkOO/+28pD2L2VKmu0HBnXhNmjPjwuiHqu8qbQoTApn6S/Nw0jEvtzs7LG boIlnGSEnGEQq944n4NthYyCuMZzApAW+YbDTrJD2COzTqxo8WFaibyqrObQPTY0hrjz LDf56krwuhZsbTdjgqqNuuzd2+uiCyoO16C5ZabltkfNaEHlcRpbqhetJmdkG5vQ0W8/ Z/kEmhpPwRGvONc13lUsMRzteN8DGNEzN/nZ6iIcPNsR8ZtmRgsdQYcaOnM7B+VWm27L b4mYst6wf8q+jDDKYx15IK6WUtMWcLg3dn9VlhckLK8Yk/oJvKWZZOZDM5Kffma5d967 LCGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=vjVDzTkF+F3tiiHoVw1K8hrvkA9MZvnYynfMbBBmo/Q=; b=P84NtP9KDweGMJ61n8q4t9euRGmJCRcouzMpk6+1+Ql2Y17v/tl1uKy0ELaN/u39hp FaiRa6YC5oqQ4jaJ1lFGMXCbbvPZIsA427h1Nm3gyPNRkRtM1xpvDuLWNXNkwBVqAycP 67Vv5JLa7NEp/SFAmN4XvQ1Lb502qpBObKIollA9Z7z7gcc5dLs1fGbc4+egZEfWb7Rc Sk8Uocb6N0DKkyyXoks4Rwr2pUvWfAJN3kRtQQyL8euGzIBpW+hAa4U3qA133nk8OTPB Z1Lh/53toIjFrFYOzqRXLIKJfXLK9a8QXQ+hAoLEacJOlt5Vs3USoFxGKBZRWC/3MWC/ qh4A== X-Gm-Message-State: AOAM533bvmiJvn2Jsn71ex66LTHW5YiFBznYVlrzolm9vyLxqlokjXyv FKnQpj+8WG8iJAyrNOKxdyiqOqY7MIabERd/qcQ= X-Google-Smtp-Source: ABdhPJyUqH75kqqWMCWBP9DD/0e7s+qDqFjm0Sm20fT8x1mH9M2o6AV8Pj7mG6Qh5oHXSjrjRW17uUdDJXY+FQAQRyQ= X-Received: by 2002:aa7:9af6:0:b0:4a2:fa4a:714c with SMTP id y22-20020aa79af6000000b004a2fa4a714cmr16188882pfp.40.1638499098402; Thu, 02 Dec 2021 18:38:18 -0800 (PST) MIME-Version: 1.0 References: <87o860f6ov.fsf@gnus.org> In-Reply-To: <87o860f6ov.fsf@gnus.org> From: Aaron Jensen Date: Thu, 2 Dec 2021 21:38:07 -0500 Message-ID: Subject: Re: bug#24048: 25.0.95; syntax-ppss can be slow To: Lars Ingebrigtsen Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 24048 Cc: 24048@debbugs.gnu.org, Dmitry Gutov X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Wed, Dec 1, 2021 at 2:47 PM Lars Ingebrigtsen wrote: > > Aaron Jensen writes: > > > Ultimately, it seems like it may be worth reconsidering this condition: > > > > (and old-pos (< (- pos old-pos) > > ;; The time to use syntax-begin-function and > > ;; find PPSS is assumed to be about 2 * distance. > > (* 2 (/ (cdr (aref syntax-ppss-stats 5)) > > (1+ (car (aref syntax-ppss-stats 5))))))) > > (I'm going through old bug reports that unfortunately weren't resolved > at the time.) > > This bit is now: > > (if (and old-pos (< (- pos old-pos) > ;; The time to use syntax-begin-function and > ;; find PPSS is assumed to be about 2 * distance. > (let ((pair (aref syntax-ppss-stats 5))) > (/ (* 2 (cdr pair)) (car pair))))) > > I.e., the last clause is gone. I don't know whether this affects the > issue you were seeing, though. Is syntax-ppss still mis-caching things > for you? I can still reproduce it with the specified repro: Load https://gist.githubusercontent.com/aaronjensen/d4cd40347a916dd36c8239afecf64a7d/raw/b52440bb51b96193a365a7f4cc1c8733ba98476f/syntax-ppss-slow-repro.ex Install and enable elixir-mode At top of file: M-: (benchmark 100 '(syntax-ppss)) On line 71: M-: (benchmark 100 '(syntax-ppss)) For me it's 0.1ms vs 5ms Aaron From debbugs-submit-bounces@debbugs.gnu.org Fri Dec 03 11:27:09 2021 Received: (at 24048) by debbugs.gnu.org; 3 Dec 2021 16:27:09 +0000 Received: from localhost ([127.0.0.1]:52084 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mtBOv-0004L4-Dx for submit@debbugs.gnu.org; Fri, 03 Dec 2021 11:27:09 -0500 Received: from quimby.gnus.org ([95.216.78.240]:54082) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mtBOn-0004KP-Mv for 24048@debbugs.gnu.org; Fri, 03 Dec 2021 11:27:08 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=kJ+VQnKBF/VAh4eAupcNDP8YNvOR97ToEmJzqWXPh20=; b=NnhDuug51iFLVMWKCfuMtOF6qX QJcVNXE21Jw+xL6qfrnIk/+akyhd7qlj+dUGJJyr9PVCvNFGtfM2x0ZAM9zvMsGWYkLqzF0sKrJPG t9pG2YJTDl2cRyS5hGm21NKGyCQ4tbHVlqiRMNO/detkLGz5NImqydTrAoe+VWFmBa8Q=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mtBOe-0004Ru-3c; Fri, 03 Dec 2021 17:26:54 +0100 From: Lars Ingebrigtsen To: Aaron Jensen Subject: Re: bug#24048: 25.0.95; syntax-ppss can be slow References: <87o860f6ov.fsf@gnus.org> Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAD1BMVEXWq2TeuoyiYkxB LyT////lU39VAAAAAWJLR0QEj2jZUQAAAAd0SU1FB+UMAxAaDharFtIAAAGNSURBVDjLbZMBssMg CESRXEDzL2DgAvlw/7t1URNNG6bTZnzCsoQSRaRSSlZH1BJBI3CeyhbnblRyyWmCsnuPmnLKtKRs AyBllqJE2a+oZSaA7Dc4lwSiuxLiAq2/ohOktdtbAheOod4SGjB1E2kgdw/hwlRwKKL+nxeJv7hb dzDR8wnkCj2XptLmoijkavjcgDIFcOc+FI5EIBbCqUD+UMOTcaUOQJq/UG9jRAQgrlHHdBcAMRQQ 6ULRvUnNwofU3puT1AGYuJ+Fe3caF9wqziHL0hpcABoRTplhaAJtoEAj6jU3dM0b4qRywJI+AVzg coLEDyDBOuUXwCnejxgG+dTg8EEab6x3pZcGRmiMZivjJYdzGQAJlWEPJ5sRvtGOD+sS2sb4wmxj O9puUmrL0o3QcbeFSac2fn12FYTbdn23extqpS+gIjNX3jP6851hPhdeV3A13W/pMsTxfwocLifQ AeB7BTZ+D+0D+imVMeKkv8D2mIy8ZABwjlX+BgR3+xtoC/ZWCvM9a4h/AOuenqUSokA1AAAAJXRF WHRkYXRlOmNyZWF0ZQAyMDIxLTEyLTAzVDE2OjI2OjE0KzAwOjAwc9JY1wAAACV0RVh0ZGF0ZTpt b2RpZnkAMjAyMS0xMi0wM1QxNjoyNjoxNCswMDowMAKP4GsAAAAASUVORK5CYII= X-Now-Playing: Joni Mitchell's _Clouds_: "Tin Angel" Date: Fri, 03 Dec 2021 17:26:50 +0100 In-Reply-To: (Aaron Jensen's message of "Thu, 2 Dec 2021 21:38:07 -0500") Message-ID: <87mtlhwt6d.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: Aaron Jensen writes: > I can still reproduce it with the specified repro: > > Load > https://gist.githubusercontent.com/aaronjensen/d4cd40347a916dd36c8239afecf64a7d/raw/b52440bb51b96193a365a7f4cc1c8733ba98476f/syntax-ppss [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 24048 Cc: 24048@debbugs.gnu.org, Stefan Monnier , Dmitry Gutov X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Aaron Jensen writes: > I can still reproduce it with the specified repro: > > Load > https://gist.githubusercontent.com/aaronjensen/d4cd40347a916dd36c8239afecf64a7d/raw/b52440bb51b96193a365a7f4cc1c8733ba98476f/syntax-ppss-slow-repro.ex > Install and enable elixir-mode > > At top of file: > M-: (benchmark 100 '(syntax-ppss)) > > On line 71: > M-: (benchmark 100 '(syntax-ppss)) > > For me it's 0.1ms vs 5ms Thanks for checking. Perhaps Stefan has some insights here; added to the CCs. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Fri Dec 03 14:04:27 2021 Received: (at 24048) by debbugs.gnu.org; 3 Dec 2021 19:04:27 +0000 Received: from localhost ([127.0.0.1]:52233 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mtDr9-0000No-8G for submit@debbugs.gnu.org; Fri, 03 Dec 2021 14:04:27 -0500 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:63713) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mtDr5-0000NZ-L9 for 24048@debbugs.gnu.org; Fri, 03 Dec 2021 14:04:26 -0500 Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id AB86E806A3; Fri, 3 Dec 2021 14:04:17 -0500 (EST) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id D8C2E80043; Fri, 3 Dec 2021 14:04:15 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1638558255; bh=l+wWjeXt+emoeZul+4iPGYSa0QRimejQa/HxPIb/OeU=; h=From:To:Cc:Subject:In-Reply-To:Date:References:From; b=nNoiK4OiZH1AWucA51o6fuwpOKj/kwvn3n0PAFWt44YBTbLPAGyepgefmJmOuRB2p T61iJPtwTFZnJTkDtz1FXX9hTws80bVHidNfqicp6xfG7xDxxQOcDbB4rrA7H1yA8O o5SafX0fhW2yvozrb22IhOwdpHkS1AAzDz2yIcN85RoVdtffYbmnwFT/ctXsFmjrdL FPFVSxyCS0hmyEnGoLieKpvSbI7gbD8XcvQ27ifv+YWnN7YU32lF+ViLxMdtgyxH3q 0LxptzKddPhOiap2cN9vyZj1BWka67jgdHorfMv/VpixIqJ/4aOEPvbXnX7qIszNhT Xkl/oGOLxPGPA== Received: from pastel (unknown [216.154.30.173]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id AC385120891; Fri, 3 Dec 2021 14:04:15 -0500 (EST) From: Stefan Monnier To: Aaron Jensen Subject: Re: bug#24048: 25.0.95; syntax-ppss can be slow In-Reply-To: (Aaron Jensen's message of "Thu, 21 Jul 2016 07:29:19 -0700") Date: Fri, 03 Dec 2021 12:01:41 -0500 Message-ID: References: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.091 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 24048 Cc: 24048@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > In certain situations, the caching of syntax-ppss can seem to be > insufficient for good performance when syntax-ppss is invoked in > a tight loop. Yes, that's a known limitation. Most uses of `syntax-ppss` that need to call it in a tight loop move the call outside of the loop and then use `parse-partial-sexp` inside the loop (and they're careful to move forward so `parse-partial-sexp` is only called between the last position and the current one so we avoid re-parsing the same text). Currently `syntax-ppss` assumes that parsing <2500 chars is "fast enough" and hence that it's better not to update the "last ppss data" when this happens (the advantage is that we save time not-updating the data and we also save time if the next call is somewhere within those <2500 chars). Stefan From debbugs-submit-bounces@debbugs.gnu.org Fri Dec 03 20:32:11 2021 Received: (at 24048) by debbugs.gnu.org; 4 Dec 2021 01:32:11 +0000 Received: from localhost ([127.0.0.1]:52488 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mtJuM-0003dk-OS for submit@debbugs.gnu.org; Fri, 03 Dec 2021 20:32:11 -0500 Received: from mail-pl1-f180.google.com ([209.85.214.180]:37587) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mtJuI-0003dB-UI for 24048@debbugs.gnu.org; Fri, 03 Dec 2021 20:32:08 -0500 Received: by mail-pl1-f180.google.com with SMTP id n8so3273428plf.4 for <24048@debbugs.gnu.org>; Fri, 03 Dec 2021 17:32:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=k9W4WFVzGMu5548GmYFhDkgqPdnegQoQh8bNkd+/B94=; b=ooCh3+ZjVJ50KjNaO2iyD3vLuqphxsOM6V3vgmpd1da5A5TFRnpyjn2iwKfvBR6nKm R2KqIPVp/qkdtydWD00Bsjnedhm+yQ5U0y5RDv6L6uX4Z9Zd2o1llEoL2Hdh/KCl7nwO joDE0u1T4KJZL1LD/6JwyBTWzoeHUBJCZzeABJod7C3OuemYxHie5WPgW5s/LOiZA6Xk jHjCzSf3sV2Hzpvb7cYj4oHx4p+QCMwOinGhGFf3wzQV1egGP7zW5t4qNvd6g2fFGRFZ 8aOr0mTrqTFBF/J2Z2v71OaDGnmx9m6ICL2cGgIOIgo2e6UuLIO+BY9qZbr5OEgVhvX+ 4yCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=k9W4WFVzGMu5548GmYFhDkgqPdnegQoQh8bNkd+/B94=; b=fYgXHmKu01gr/GGZx8woltoG5xjipB/holfuNy1IR/J/lCuZ4q3A96aJ/sI8j0dPbz wqdjQ7hx5vzdZ+CcXYPyD8uUBPMyoJNCkpf6rw5DtNXSCG3KQ8XTtqSKKJ/AEMSteuAe rUV2s0D35XH1dz4SwmYG/Xmt21kHAeAOQVIgtHBbX4kL/KbjYCM3Lm/pCDQ0jHz1HOOx A6RemzmsbB2UROY2IptfOuaOFsv7TN9vmDYh0S3onl/W7KL5sIu0B6Fgvh5EqQKb0EXB 50WzmGfmbor9vD6iqH3tbeO3FxxRM1Np5oH2kTh+B/Bf75kZ3aAabxHZDl/jsEeyX3nT 8rqA== X-Gm-Message-State: AOAM5312nw4iM+kyS9yb2m/t9fKto4WhkkXMJtxepSQBX0fZqwJBZP4e Kcvkz57djgYZNTLPiIFaJPhIKgKWqWFMyjvIBLFmtAvb X-Google-Smtp-Source: ABdhPJwlzPCJoTRfb0qKRdgQghlnf41YF4sg1IE6+sbhOQzHMSDxR41bfmBtp9RyPmSBMvXIoSym2Co4xIGBDnLNzbA= X-Received: by 2002:a17:903:18d:b0:142:12ba:8513 with SMTP id z13-20020a170903018d00b0014212ba8513mr26531106plg.69.1638581521072; Fri, 03 Dec 2021 17:32:01 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Aaron Jensen Date: Fri, 3 Dec 2021 20:31:50 -0500 Message-ID: Subject: Re: bug#24048: 25.0.95; syntax-ppss can be slow To: Stefan Monnier Content-Type: text/plain; charset="UTF-8" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 24048 Cc: 24048@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Fri, Dec 3, 2021 at 2:04 PM Stefan Monnier wrote: > > > In certain situations, the caching of syntax-ppss can seem to be > > insufficient for good performance when syntax-ppss is invoked in > > a tight loop. > > Yes, that's a known limitation. Most uses of `syntax-ppss` that need to > call it in a tight loop move the call outside of the loop and then use > `parse-partial-sexp` inside the loop (and they're careful to move > forward so `parse-partial-sexp` is only called between the last > position and the current one so we avoid re-parsing the same text). > > Currently `syntax-ppss` assumes that parsing <2500 chars is "fast > enough" and hence that it's better not to update the "last ppss data" > when this happens (the advantage is that we save time not-updating the > data and we also save time if the next call is somewhere within those > <2500 chars). Copy that, thanks for the explanation. I'm not presently affected by this (no smartparens and no elixir) so I'd be happy to close this given that it's working as expected and there are clear ways to avoid it in many cases. Thanks, Aaron From debbugs-submit-bounces@debbugs.gnu.org Fri Dec 03 21:41:20 2021 Received: (at 24048) by debbugs.gnu.org; 4 Dec 2021 02:41:20 +0000 Received: from localhost ([127.0.0.1]:52532 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mtKzI-0005Hl-AG for submit@debbugs.gnu.org; Fri, 03 Dec 2021 21:41:20 -0500 Received: from quimby.gnus.org ([95.216.78.240]:58914) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mtKzC-0005HR-Sj for 24048@debbugs.gnu.org; Fri, 03 Dec 2021 21:41:18 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=biCKqTlkiysO1L/FT2tEYY8oZIcdj1iYU2KQYLZjdT0=; b=pB0lc4QPfoo/23/XFGYVjnAS6r lgqMjH/avyZzk3lA02B4dDMfoDarWo/BN+DR3e1bc6i0CHyk0xGVLc7CrD799CZJsO5XMeml8u0tz IO+KI8X0g0EYsymmNLivBRTOFoJ4syScsA+vbjiUYwF5kF8j6AiQ+/3fGeqEPClTTnIU=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mtKz2-0001La-UF; Sat, 04 Dec 2021 03:41:07 +0100 From: Lars Ingebrigtsen To: Aaron Jensen Subject: Re: bug#24048: 25.0.95; syntax-ppss can be slow References: Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAG1BMVEXatYPjvIfowovJ pnnKpZl4ZHukl6A8KEb///+4QDp7AAAAAWJLR0QIht6VegAAAAd0SU1FB+UMBAIoMc/IIDkAAAGU SURBVDjLdZPrbcQgDIBN0wGAToCl/kdCpy7QdoETzQS5TpCyfv0ikOvV0uUSf35hbABwoYunH39H RARH/6JFTCGkw4jBQ4F/9BQSLJQJJs6AClIKLphrVIBShPp2HwHJgAvAtUolBrLTIgksGc4eBLyn l1K87yBYKM9FvOSRQwAdmUABlgEcl845Si5lKdIb7o4AiVBEzIFD8ZmkXhFVI3qJqrnjdMDkpYn4 R5KG+qgs27VuN5areDD4bofUuradck9gXw+QMEioJwHVAJnIubrHfhMlYwWug639bFzDPWhkWm/1 7PFGuq/XxuZ7m8Hzu6PSK35WKXmAC3UPymWt92BtJ9lpao4ceuwOqKG9iXYNKM2N04iO9juxS3KD Mui8BR7oEflTAA2lrQfYwGlyulkDbkyPl/3hQJR+obmKerPqgdR/Nlty4nfsydlEgHdsYkQOmGIf Jz5IkMexaqqOaQAhqLOvs6Wgu3SgCw3aA0NjQ73O63mjTdllWm+TbF7cj8lwgZz7u5v1dNUZHgiD Lmd9+QWQzpHIA5uauAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMS0xMi0wNFQwMjo0MDo0OSswMDow MB8B/uIAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjEtMTItMDRUMDI6NDA6NDkrMDA6MDBuXEZeAAAA AElFTkSuQmCC X-Now-Playing: Depeche Mode's _Music For The Masses_: "Nothing" Date: Sat, 04 Dec 2021 03:41:03 +0100 In-Reply-To: (Aaron Jensen's message of "Fri, 3 Dec 2021 20:31:50 -0500") Message-ID: <87wnklrt1c.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: Aaron Jensen writes: > Copy that, thanks for the explanation. I'm not presently affected by > this (no smartparens and no elixir) so I'd be happy to close this > given that it's working as expected and there are clear way [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 24048 Cc: Stefan Monnier , 24048@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Aaron Jensen writes: > Copy that, thanks for the explanation. I'm not presently affected by > this (no smartparens and no elixir) so I'd be happy to close this > given that it's working as expected and there are clear ways to avoid > it in many cases. OK; I'm closing this report, then. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Fri Dec 03 21:41:24 2021 Received: (at control) by debbugs.gnu.org; 4 Dec 2021 02:41:24 +0000 Received: from localhost ([127.0.0.1]:52535 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mtKzM-0005I1-GG for submit@debbugs.gnu.org; Fri, 03 Dec 2021 21:41:24 -0500 Received: from quimby.gnus.org ([95.216.78.240]:58930) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mtKzK-0005Hc-2e for control@debbugs.gnu.org; Fri, 03 Dec 2021 21:41:22 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Subject:From:To:Message-Id:Date:Sender:Reply-To:Cc: MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=7fzU3qlpVfhHikLYXzcfH2/k50JNMPHOwIJ0JdffELs=; b=VL+vAZznBPmmf4KzkzP6eH1eOP fNAllJJXdFhMVfecR5anGpMJRsCv4xeuErjZDmA14ZGBHPmOn1ywkRpASW4GiClw3uoCBBnnp39Zt Ht5LxaQkT1fE9VHSrJNLVv0iiYpQROOJhbfjlB+v2lSLTe+kwitjSPEktyxx3vnqDfL0=; Received: from [84.212.220.105] (helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mtKzC-0001Lh-95 for control@debbugs.gnu.org; Sat, 04 Dec 2021 03:41:16 +0100 Date: Sat, 04 Dec 2021 03:41:13 +0100 Message-Id: <87v905rt12.fsf@gnus.org> To: control@debbugs.gnu.org From: Lars Ingebrigtsen Subject: control message for bug #24048 X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: close 24048 quit Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) close 24048 quit From debbugs-submit-bounces@debbugs.gnu.org Sat Dec 04 09:41:02 2021 Received: (at 24048) by debbugs.gnu.org; 4 Dec 2021 14:41:02 +0000 Received: from localhost ([127.0.0.1]:53144 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mtWDl-0007lP-RY for submit@debbugs.gnu.org; Sat, 04 Dec 2021 09:41:02 -0500 Received: from mail-lj1-f175.google.com ([209.85.208.175]:40755) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mtWDj-0007ku-IY for 24048@debbugs.gnu.org; Sat, 04 Dec 2021 09:41:00 -0500 Received: by mail-lj1-f175.google.com with SMTP id u22so11937784lju.7 for <24048@debbugs.gnu.org>; Sat, 04 Dec 2021 06:40:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=5PdUBw3y01GKDjk/LbG77WeNFG/X73OnLPQKJc80G8E=; b=NBpkfRlbjxAkOf4wY8TSjq5gz2Z6IE5ckep+La3Kcl1h83GhjP2FeU4jKOc+AOSntj 7YFJjh6XpkswnGJ+sxtlP9Eqc+teDL/sh8Cn1n4fg0x0hMz3CGRmHePqf6Y8jYSpJyVi gDEMKpw2h7lMB8QCo1jYN9MlPmn7feXpCJf+fNo1nbQgun7dtml19FaSIr2HQZ1OAfSL pn0EBvEf7bxRIykXD35gX6t3KpcZaVryCpKsPqBzmJt8lPi28lhaa+ItYCq15qF72n6j KpMGe8Uneo86uenxq198a9CnIujfRFvZvonIWaJnAlVwXwVLyxlZHH77IqZ/hij+68aT T74Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=5PdUBw3y01GKDjk/LbG77WeNFG/X73OnLPQKJc80G8E=; b=ZDFBCjxFDTvDXzoGmez3B5Ga+pnCPoZ7inTxLChPRz9OCeDo/cI9i5Nr9SfojAAKqV 82PhnT1zImknySi68kodaGaS4+NTKZbYCloAI7VwPVDJzuBx1BkwqJvaMwU5R/6B/4EL ALRTZW/pdyjtIk9cZMmWcI43kiwYOwKwO4WjB/Qf07xxEV1WVWCDu3Q2E+/ttE/Sh1QQ ev+ASc8Ar7vziTdckbTM7IPNm4F8YGwitIjWjj31fwD5TqualLotSVqWZVlntgZ8R22D ipNRu4t7vPu1n2U4WI/s+u2h6/wZiBMC1xhKCSkyER/XyghTP8IC8cPLHgZ/R70UnTOi ipgA== X-Gm-Message-State: AOAM5300EMqK8CcUBwi2cEd5p30LZjaVbSIjDGlqcRI+aX/fur1UXYTR LkW8nSHWqeurD94qXwsBsK4qi7FddSg= X-Google-Smtp-Source: ABdhPJyORE6/KU52WUj/xkLsJ7dOJTBglu1utWnMSmjgHpoNAv1TvlpZricHLYeDcSBiBdJeFlWqCA== X-Received: by 2002:a05:651c:211c:: with SMTP id a28mr25414641ljq.323.1638628853558; Sat, 04 Dec 2021 06:40:53 -0800 (PST) Received: from [192.168.0.103] ([5.18.233.185]) by smtp.googlemail.com with ESMTPSA id j20sm842927lfh.190.2021.12.04.06.40.52 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 04 Dec 2021 06:40:53 -0800 (PST) Subject: Re: bug#24048: 25.0.95; syntax-ppss can be slow To: Aaron Jensen , Stefan Monnier References: From: Dmitry Gutov Message-ID: <4f093c5a-75f7-ecc7-f54e-84999daf76dd@yandex.ru> Date: Sat, 4 Dec 2021 17:40:18 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Score: 0.4 (/) X-Debbugs-Envelope-To: 24048 Cc: 24048@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.6 (/) On 04.12.2021 04:31, Aaron Jensen wrote: > I'm not presently affected by > this (no smartparens and no elixir) No Ruby either? From debbugs-submit-bounces@debbugs.gnu.org Sat Dec 04 11:27:28 2021 Received: (at 24048) by debbugs.gnu.org; 4 Dec 2021 16:27:28 +0000 Received: from localhost ([127.0.0.1]:54789 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mtXsm-0002Jd-L6 for submit@debbugs.gnu.org; Sat, 04 Dec 2021 11:27:28 -0500 Received: from mail-pj1-f44.google.com ([209.85.216.44]:43562) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mtXsk-0002JP-A6 for 24048@debbugs.gnu.org; Sat, 04 Dec 2021 11:27:26 -0500 Received: by mail-pj1-f44.google.com with SMTP id nh10-20020a17090b364a00b001a69adad5ebso5046935pjb.2 for <24048@debbugs.gnu.org>; Sat, 04 Dec 2021 08:27:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=oKdkrgHFVCDkr/Edzt6njy8JevpgH3/qTFXEbvqMb9Q=; b=CQF+rwaXN7sIxrAGfaV3IYDAlHwfZ+eAv6ZRmxfFU5PHJ2oPm0/vlX/x+4jKEPJ0gv z4Z2c4XTkT8podIxvNqP+N/Tt1ZbXiOBfPF8Qwsw0A7/ZkkfZ4JKnoQlLAm9pMMXyuOy lrJSRYykfCMtk9LqUEKqNs2xFX8LmECj8FaPtDyiilN8rLVkNWeVDSEzweZciHVUWYuu YumIpPSJmznzgrBi3Fml5IIB5dp28PHvT6SObATN4g+CCPX0qa9OjZh5rmd8s1hSeeB4 kP9AJWWB6ATk4FBUjqE6V/MoNf2mSwRtadBi/K/ch8bzmulCG3s/ttSdJjiiSxUVbJZm Sbgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=oKdkrgHFVCDkr/Edzt6njy8JevpgH3/qTFXEbvqMb9Q=; b=zV5N19Yh/gXHWDOvXGX9tYgp6GnmpAE5OyhYVu4q5uSy41g4o+oviP4UmoBhXRVng1 wVMIvv8CGOVrcmDFIChsVUWaPLnrgdoSankeNkeyoiVzEUCpjM710ktdh4c9r8BXJubj vvlqnpLwd6H8cbrMTJCHlRbY9T+jRp60UB94DOkusnvIQbS+4xews2UjUeENbXk6y9lp pNwohDb3fjY5NWE9l19ZctFBPgxT7oLW1UtTd3+gsr68UH9Hq867ff/llbL9aTpZHZhh wVboP5+eXKGcMi1fJmfl09VqvEkvbNApS//uegV62dgjaZzdcwXzsNdK/yDDxzMC5DJP UxmQ== X-Gm-Message-State: AOAM533fF7x3U72HCuUEUpVBCXXDZLG8z5rJBoImxHJvC7JPkHva8gjE SDl0wSB0iVWC6DBxfyTDJOhIj6MwDGrl8i2jwnk= X-Google-Smtp-Source: ABdhPJyxjAxxzVfnopoI7HOtEGgMJa9GsRdzoyXMBypVUdrIdUKSUhD2gbtm/jotfTMspO4nvy/32f7n1P/o3vrNPEM= X-Received: by 2002:a17:90b:190f:: with SMTP id mp15mr23184200pjb.210.1638635240481; Sat, 04 Dec 2021 08:27:20 -0800 (PST) MIME-Version: 1.0 References: <4f093c5a-75f7-ecc7-f54e-84999daf76dd@yandex.ru> In-Reply-To: <4f093c5a-75f7-ecc7-f54e-84999daf76dd@yandex.ru> From: Aaron Jensen Date: Sat, 4 Dec 2021 11:27:09 -0500 Message-ID: Subject: Re: bug#24048: 25.0.95; syntax-ppss can be slow To: Dmitry Gutov Content-Type: text/plain; charset="UTF-8" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 24048 Cc: Stefan Monnier , 24048@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Sat, Dec 4, 2021 at 9:40 AM Dmitry Gutov wrote: > > On 04.12.2021 04:31, Aaron Jensen wrote: > > I'm not presently affected by > > this (no smartparens and no elixir) > > No Ruby either? I do use Ruby with enh-ruby-mode. I haven't noticed enough typing lag for me to investigate. Why do you ask? From debbugs-submit-bounces@debbugs.gnu.org Sat Dec 04 19:14:15 2021 Received: (at 24048) by debbugs.gnu.org; 5 Dec 2021 00:14:15 +0000 Received: from localhost ([127.0.0.1]:55717 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mtfAV-0000KI-B0 for submit@debbugs.gnu.org; Sat, 04 Dec 2021 19:14:15 -0500 Received: from mail-lj1-f169.google.com ([209.85.208.169]:33427) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mtfAO-0000Jm-Ew for 24048@debbugs.gnu.org; Sat, 04 Dec 2021 19:14:14 -0500 Received: by mail-lj1-f169.google.com with SMTP id v15so13721879ljc.0 for <24048@debbugs.gnu.org>; Sat, 04 Dec 2021 16:14:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=ilo7OHXGi5FGDizuD8Ln/iWyylfBgjz3DHRh4ixMlZI=; b=VYfMQgnwhuS5+zcd2KotZzunu7w0gdrTQIDYFAtzFcrKC1b3WKwEPWpnbDI+HC5FyZ QqMWDYtTMhzo2eq5z7p0+69U6Rf/i3fhmxsZbLsk7e256V0mzxyqUOpe3buz3l+oeEVS mgx3hItMH7Du5vjxC3eFhBXrx2KoGuKlFYhoI+7chLYUvbUqa+Aqt5kyR5PONoqKdhu5 IjqFWXS0AaSKwmQLAqFYsRMJFn2G7FcwERB0QrxoX+UGSPON1fUR97rTSKWgcBGj6ATR Xxgu5cvvum+WcsYHBavKQz6pJIHEumQZpxfVKmhgpQ+COlr7Z69EXJA2mMhBO+6Fmhce 9feA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=ilo7OHXGi5FGDizuD8Ln/iWyylfBgjz3DHRh4ixMlZI=; b=E8qVNsxOH1rHHSMayZ/9q7fbEkkRTMcNooX3A2ALy3RhFwCikG3oehg8ds/p+N5vly FSA/tdRJFeNFBj5ZXZJHVNsj+vf+DLUe/zbuwjFpMSXpzIvjMonHmX0XL/abQ4Zcewb+ NMVb5Usl5D43lV/CyxwadPOj8B2423djARCCXvdCm0yfnnNDmFE+0cVIoL/HzJyp9FYb C3DdYsZ4MuXT+gbkFiM+PLCYQ8ViRd5AR2gey2ZHC1txuf6qk0doKQPZ20mdHDEA2muf zziA/gRg5w5ryLXaM04oM3Bpm80qFmtFwL1/4hpO5qXrF+fN1V4mn3OabSXAGrK33h92 Bspw== X-Gm-Message-State: AOAM531FfYg+EQH4/OVwFJhyCDJMCIUERtSUH07cvz9jBg1Ksos6Houh DFPmPh8b7+1SkG7IcuDLG0/Dj2q7TiI= X-Google-Smtp-Source: ABdhPJxkA0YN3GUQp3Idl50G0FT/U0kTzFuxscmoOz4ipOOESFMKhT3JggESiNJ6c6qR5GyodYXJJA== X-Received: by 2002:a2e:96c2:: with SMTP id d2mr27291081ljj.46.1638663242208; Sat, 04 Dec 2021 16:14:02 -0800 (PST) Received: from [192.168.0.103] ([5.18.233.185]) by smtp.googlemail.com with ESMTPSA id n2sm993380ljq.30.2021.12.04.16.14.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 04 Dec 2021 16:14:01 -0800 (PST) Subject: Re: bug#24048: 25.0.95; syntax-ppss can be slow To: Aaron Jensen References: <4f093c5a-75f7-ecc7-f54e-84999daf76dd@yandex.ru> From: Dmitry Gutov Message-ID: Date: Sun, 5 Dec 2021 03:13:27 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Spam-Score: 0.4 (/) X-Debbugs-Envelope-To: 24048 Cc: Stefan Monnier , 24048@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.6 (/) On 04.12.2021 19:27, Aaron Jensen wrote: > On Sat, Dec 4, 2021 at 9:40 AM Dmitry Gutov wrote: >> >> On 04.12.2021 04:31, Aaron Jensen wrote: >>> I'm not presently affected by >>> this (no smartparens and no elixir) >> >> No Ruby either? > > I do use Ruby with enh-ruby-mode. I haven't noticed enough typing lag > for me to investigate. Why do you ask? You mentioned Ruby previously. If you had identified particular performance problems with ruby-mode, we could try to fix it there (even if there's not much to be done in syntax-ppss). enh-ruby-mode is a different matter, though. From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 05 00:06:27 2021 Received: (at 24048) by debbugs.gnu.org; 5 Dec 2021 05:06:27 +0000 Received: from localhost ([127.0.0.1]:56024 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mtjjH-0004IN-HC for submit@debbugs.gnu.org; Sun, 05 Dec 2021 00:06:27 -0500 Received: from mail-lj1-f177.google.com ([209.85.208.177]:40605) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mtjjF-0004IA-Sf for 24048@debbugs.gnu.org; Sun, 05 Dec 2021 00:06:26 -0500 Received: by mail-lj1-f177.google.com with SMTP id u22so14342730lju.7 for <24048@debbugs.gnu.org>; Sat, 04 Dec 2021 21:06:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=vfppyP1eUfrFrBDfzOdLL6RC1bLjSgTXYRgHzLdxYgw=; b=hdDikV16oLxI8hbyGTXe0ADoTBHigP7RCxqmW2HwmSWnX8Js8sF7xaBr2v+gXOj1Eo F/epGrEcrfMDoimiM/Ft4VD8oUy6x1E9RikPyaUkphEWThfZjicUi5K/cjmUVUWUHetU SnJPp/9i2wjkivZ9eIe5ZTtZlNRDQ6mhwZ+H9/0llMFTV3qX9ngS7+fmDlIwuGr+GeMe kwv4iPBHXf78KEBWEDkZpElWI8CmlC4rWEJjXkfWq13HdQGYGevD11lT6hfKfMFuTmHE O+G95qII56ZmYjbeE+xLoP5BIUOsobJkpab2uvkrY7AmcsOs32JFgL+RF3nquoi+VlSy lJ5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=vfppyP1eUfrFrBDfzOdLL6RC1bLjSgTXYRgHzLdxYgw=; b=1KOSY6eFkvm7IIDDGbTAefhqdQTaDpn0/8KQDcoXV4WKZZ1iTxQ6SzlnMphd+L9y9j vVg2WwV+OTy2osSa22JevXzkke6pHEWb//RhEP38j6oZ61OZyxjL7nCEtCEU3drt4lQx mQqYyyzjOr5XrI+reDkvOYZQ+yz0Be6Yld+lCb1jObHsKzFsr9430KfaUVAz74DKoCvn MCDhVDJhKNWZxyiUmUTup29ReJz3WQb8K9S7OYJ0rozMfOG0dAJEuNAoJHUITdmUCEUb NVX/ZbUlLrSSuFJI3be7Cyr3lUdSCHDdMFj5PL7OcBKXPQ5K3Q/OoD8IWf6mKXU58s8t RZfA== X-Gm-Message-State: AOAM531t7MPsPoACcr3ogdosj5/ivIpqPMZTjRDCS3Fc1ZYy8pvGH5Lj 7XlbrKgCM13NJrcur1UZHuFAjObMQ4JUv50obVE= X-Google-Smtp-Source: ABdhPJwE84O51FecATnH9mqX5ZKcSuDcfLUyzEd0unkY+Z00qdE+mtOJ7IAkM60XgbgG7W8C8pNIV4yaZ8buA3NVRg0= X-Received: by 2002:a05:651c:1411:: with SMTP id u17mr27997273lje.483.1638680779947; Sat, 04 Dec 2021 21:06:19 -0800 (PST) MIME-Version: 1.0 References: <4f093c5a-75f7-ecc7-f54e-84999daf76dd@yandex.ru> In-Reply-To: From: Aaron Jensen Date: Sun, 5 Dec 2021 00:06:09 -0500 Message-ID: Subject: Re: bug#24048: 25.0.95; syntax-ppss can be slow To: Dmitry Gutov Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 24048 Cc: Stefan Monnier , 24048@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Sat, Dec 4, 2021 at 7:14 PM Dmitry Gutov wrote: > > On 04.12.2021 19:27, Aaron Jensen wrote: > > On Sat, Dec 4, 2021 at 9:40 AM Dmitry Gutov wrote: > >> > >> On 04.12.2021 04:31, Aaron Jensen wrote: > >>> I'm not presently affected by > >>> this (no smartparens and no elixir) > >> > >> No Ruby either? > > > > I do use Ruby with enh-ruby-mode. I haven't noticed enough typing lag > > for me to investigate. Why do you ask? > > You mentioned Ruby previously. If you had identified particular > performance problems with ruby-mode, we could try to fix it there (even > if there's not much to be done in syntax-ppss). > > enh-ruby-mode is a different matter, though. Ah. I don't have any cases right now, so I'm ok letting it go until something comes up. I no longer understand enough about what's going on in that function to even suggest an improvement, so if things are working as expected and no one else is noticing a perf issue then I think we are good. Thanks, Aaron From unknown Sun Aug 10 10:55:10 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Sun, 02 Jan 2022 12:24:06 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator