From debbugs-submit-bounces@debbugs.gnu.org Fri May 10 16:55:22 2019 Received: (at submit) by debbugs.gnu.org; 10 May 2019 20:55:22 +0000 Received: from localhost ([127.0.0.1]:39218 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hPCY5-0002M0-UH for submit@debbugs.gnu.org; Fri, 10 May 2019 16:55:22 -0400 Received: from eggs.gnu.org ([209.51.188.92]:57169) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hPCY4-0002Lo-7k for submit@debbugs.gnu.org; Fri, 10 May 2019 16:55:20 -0400 Received: from lists.gnu.org ([209.51.188.17]:41047) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hPCXz-0000Tg-1R for submit@debbugs.gnu.org; Fri, 10 May 2019 16:55:15 -0400 Received: from eggs.gnu.org ([209.51.188.92]:43317) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hPCXy-0004Dy-1R for bug-gnu-emacs@gnu.org; Fri, 10 May 2019 16:55:14 -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, URIBL_BLOCKED autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hPCXw-0000L7-WF for bug-gnu-emacs@gnu.org; Fri, 10 May 2019 16:55:13 -0400 Received: from mail-oi1-x232.google.com ([2607:f8b0:4864:20::232]:34818) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hPCXw-0000Hw-RP for bug-gnu-emacs@gnu.org; Fri, 10 May 2019 16:55:12 -0400 Received: by mail-oi1-x232.google.com with SMTP id a132so5527137oib.2 for ; Fri, 10 May 2019 13:55:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=user-agent:from:to:subject:date:message-id:mime-version; bh=qLceAgnOWyf8ESpqhNogGqkL8/AcRmDJHXHLWxX6DwQ=; b=ZsMdnSDQ9HSgB6qiZHm31FUZMMf7ZPKgPIyB9WRVyWMjgLF9G9bIynoCjUJf4Brucb 7l/JJURvFDyyfDp3rXxvTZBZSZqqFw9eQKjYxLZZsWbZExITMoaOrVsiQqwekWZEIJWJ x5NpNlRN8zTK7rO/VsBNuUoAVESA3Uh9I7fzoHx48/+ogBep5sC/Z7Op3mVqxBYS4GxV apiyGJUqcYQRZd+usYzTvzuksfiJc289PlOLyN45EwqA6bEm7kNS0u5Ek7h+qz8F3hdB Y3O40Do8XHq9TI3Tu1mslhTj1q6jLI7gy61FzmZs/eKN7VjMRkEEio3EwbtptChoAzUt O/tg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:user-agent:from:to:subject:date:message-id :mime-version; bh=qLceAgnOWyf8ESpqhNogGqkL8/AcRmDJHXHLWxX6DwQ=; b=J6VuV9AlKaRve4WBahkqV3LLKICXhoXKKKeX8W014sLGdctXHsOEs7BEexHxWNvioB NqUqUDKXGVCfbXIIXYsLikXf50zABPOPTfyl/rgLE1oLDW1XzoUWbP4zkSKU8sO7e8BZ H+z7PIh2bd5XtcXxRvRYz3154hns/deZ9QObbU2fLeg/nr5ESzDTABtiFdONxNeyJBTn VYrTedHclL7RQm9/XMLO1ZFnDwf8qve3jHf8LEzcAow4ZV8Xih6WHo3xRP4iarA0olw8 bMKJhYqa9RczujCqrrj2Q1I2MB2WfSL3lygD9wOkSD6X/F8N25zWkVJ19ZR2eN3PRxxk D7eA== X-Gm-Message-State: APjAAAUBChQ2DtDXDDkffII0QjrVHk46UPtClgaudD4YFJJZXvsQQ4o7 p31zOWA+qSpUBIQ470tI1yPt2jJ5 X-Google-Smtp-Source: APXvYqxPXTpy8CG4ZwgagKgIfuKfCRgNKnBSMvM4zAtI6R4Lj633jFC7HZiq1jJr/wJWfQc4oRmHIw== X-Received: by 2002:aca:e354:: with SMTP id a81mr6680721oih.56.1557521710770; Fri, 10 May 2019 13:55:10 -0700 (PDT) Received: from earth (cpe-70-114-192-208.austin.res.rr.com. [70.114.192.208]) by smtp.gmail.com with ESMTPSA id 189sm2466969oih.26.2019.05.10.13.55.10 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 10 May 2019 13:55:10 -0700 (PDT) User-agent: mu4e 1.2.0; emacs 27.0.50 From: Alex Branham To: bug-gnu-emacs@gnu.org Subject: 27.0.50; Is line-number-at-pos unnecessarily slow? Date: Fri, 10 May 2019 15:55:09 -0500 Message-ID: <87zhnuuj0y.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::232 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Spam-Score: -1.3 (-) 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: -2.3 (--) Hi all - I ran into a bottleneck at line-number-at-pos in ESS's indentation engine. line-number-at-pos basically regex searches forward for \n's and counts them up. This can be slow in a large buffer. It looks like someone else has ran into this issue as well.[1] With the advent of display-line-numbers-mode, I imagine there's a C implementation of line-number-at-pos. I imagine the C implementation is faster. Does it make sense for line-number-at-pos to just use the C implementation? Thanks, Alex Footnotes: [1] https://fuco1.github.io/2018-08-12-WAR-STORY:-When-turning-to-the-profiler-turns-out-to-be-a-good-call.html From debbugs-submit-bounces@debbugs.gnu.org Sat May 11 02:03:36 2019 Received: (at 35675) by debbugs.gnu.org; 11 May 2019 06:03:36 +0000 Received: from localhost ([127.0.0.1]:39721 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hPL6c-00021C-Vu for submit@debbugs.gnu.org; Sat, 11 May 2019 02:03:35 -0400 Received: from eggs.gnu.org ([209.51.188.92]:41822) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hPL6a-00020z-Vl for 35675@debbugs.gnu.org; Sat, 11 May 2019 02:03:33 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:35445) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hPL6U-0000V6-JS; Sat, 11 May 2019 02:03:26 -0400 Received: from [176.228.60.248] (port=3223 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1hPL6N-0003UX-VS; Sat, 11 May 2019 02:03:21 -0400 Date: Sat, 11 May 2019 09:03:14 +0300 Message-Id: <83tve1edel.fsf@gnu.org> From: Eli Zaretskii To: Alex Branham In-reply-to: <87zhnuuj0y.fsf@gmail.com> (message from Alex Branham on Fri, 10 May 2019 15:55:09 -0500) Subject: Re: bug#35675: 27.0.50; Is line-number-at-pos unnecessarily slow? References: <87zhnuuj0y.fsf@gmail.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 35675 Cc: 35675@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 (---) > From: Alex Branham > Date: Fri, 10 May 2019 15:55:09 -0500 > > I ran into a bottleneck at line-number-at-pos in ESS's indentation > engine. line-number-at-pos basically regex searches forward for \n's and > counts them up. This can be slow in a large buffer. It looks like > someone else has ran into this issue as well.[1] > > With the advent of display-line-numbers-mode, I imagine there's a C > implementation of line-number-at-pos. I imagine the C implementation is > faster. Does it make sense for line-number-at-pos to just use the C > implementation? The C implementation was always there: it's what's behind the Lnn display in the mode line. display-line-numbers-mode just reuses that fir its purposes, but basically invents nothing new in that department. The usual wisdom regarding line-number-at-pos is to use count-lines instead, counting the number of lines since some previous line whose number is recorded. (By contrast, line-number-at-pos always starts from BOB.) For example, you could always have the line number of the first line in the window in some variable, and recompute it only when that line goes off the window. If this strategy somehow doesn't work in your case, please describe that use case in more detail, as IME it is very rare (read: non-existent). Using the C implementation we have from Lisp might not be as straight-forward as you'd think, because it caches various values in the window object, and relies on them being up-to-date. Code that runs during redisplay can rely on some assumption that Lisp cannot. One obvious difficulty is that you may need your Lisp program to count line in a buffer that isn't displayed in any window. Therefore, my suggestion is to get back to the drawing board and analyze your use case. I'd be very surprised if a solution simpler than just counting all the lines from BOB will not present itself. From debbugs-submit-bounces@debbugs.gnu.org Sat May 11 16:37:12 2019 Received: (at 35675) by debbugs.gnu.org; 11 May 2019 20:37:12 +0000 Received: from localhost ([127.0.0.1]:41254 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hPYk4-0004ww-15 for submit@debbugs.gnu.org; Sat, 11 May 2019 16:37:12 -0400 Received: from mail-ed1-f66.google.com ([209.85.208.66]:37653) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hPYjz-0004wh-Le for 35675@debbugs.gnu.org; Sat, 11 May 2019 16:37:10 -0400 Received: by mail-ed1-f66.google.com with SMTP id w37so10746041edw.4 for <35675@debbugs.gnu.org>; Sat, 11 May 2019 13:37:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tcd-ie.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=AvMHuT739u5GH/t+Q7Ta7kRnMP+oRXRa/7cRhIKlXrg=; b=PqK/0L6769P9PBVOMaln5sfc8d2yHluy54dbW5EvzWNWky9gEmN+WbwAg25MNGFKUC mwjI5q1hUgPVS8c/50/LZ5GiRRnv7dVG5lZrdhfYln+SYZACqiywLOK84heKECW/ODZN sHgbQTq2u0z0RUJINCZ0TKAonc7tyAmsrUo9letI70y0Gs6iNUL3GpwhTKIVQ5lmsl/l JxwnBEwJJI6a660c/3cSa47eMI0fvPRsQep3QZXzBPkxQjSEjE83z59folfMulnrWe9y /BPBBtnyyythBysXcQtl0EF9fJzSxY5CZLp/jAGXfsaqr18aKpKhjd0M80qvX/YR1ayM 1pGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=AvMHuT739u5GH/t+Q7Ta7kRnMP+oRXRa/7cRhIKlXrg=; b=BYWi4YUtLO9RcDFs8koSX4cmP8SLdb4wn5GqB94w3vctfYH2JEyGu3mrRwGyWcQg+I pftMuVReiD2lXY0gMl9LzoTPKFLotEoKby9YKkfBCNMnBRhFreEZQoHHPlgnoGfCO8a+ m+PPznd1gRWE+b2g3TiwrfHozz5HNHNqTIXodO3lZshI8/utlhc7UazgcJQDPviuGdu8 LSP8go9LYNplW1Bd/eu6cnJ1GFvMg+GvTlf39WxMDDJx+uThhZkb+LpdRFO4IQcwkTP9 dmZ3cCmMl+v5jZmgg4t1ZJH9v6V9GELeZfRoPJTZI0ic1jAUblbeQVBXBwo4m77KcEmJ EFhw== X-Gm-Message-State: APjAAAUMfE1Pr8A/NIymnSdqmD6eF1WWuGHEex5sPWCLhI8Fs4c4guBJ wUWtGHvO8ReM9mBl4bs8+wrNEEJ2i+IGhw== X-Google-Smtp-Source: APXvYqydGS5H4aZZ5UMBZnWMY3HEbYfB80PDDMukGznldEtZh7gZbBgLA7hKU/lKRDyB6KsDT/skOA== X-Received: by 2002:a17:906:7b58:: with SMTP id n24mr14927231ejo.224.1557607021797; Sat, 11 May 2019 13:37:01 -0700 (PDT) Received: from localhost ([2a02:8084:20e2:c380:8cad:ae29:555d:852d]) by smtp.gmail.com with ESMTPSA id p60sm2507175edp.0.2019.05.11.13.37.00 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Sat, 11 May 2019 13:37:00 -0700 (PDT) From: "Basil L. Contovounesios" To: Alex Branham Subject: Re: bug#35675: 27.0.50; Is line-number-at-pos unnecessarily slow? References: <87zhnuuj0y.fsf@gmail.com> Date: Sat, 11 May 2019 21:36:59 +0100 In-Reply-To: <87zhnuuj0y.fsf@gmail.com> (Alex Branham's message of "Fri, 10 May 2019 15:55:09 -0500") Message-ID: <878svcwwwk.fsf@tcd.ie> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 35675 Cc: 35675@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 (-) Alex Branham writes: > line-number-at-pos basically regex searches forward for \n's and > counts them up. It only does this (via count-lines) if selective-display is t, which is deprecated and seldom used. Otherwise it uses the value returned by forward-line (defined in C), which calls find_newline, which AFAIK uses the buffer's newline cache to some extent (I'm not familiar with its implementation). Either way, as Eli says, there's often an algorithmic solution to slowness in uses of count-lines. Thanks, -- Basil From debbugs-submit-bounces@debbugs.gnu.org Tue May 14 08:34:36 2019 Received: (at 35675-done) by debbugs.gnu.org; 14 May 2019 12:34:36 +0000 Received: from localhost ([127.0.0.1]:47633 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hQWdg-0005KI-5m for submit@debbugs.gnu.org; Tue, 14 May 2019 08:34:36 -0400 Received: from mail-ot1-f51.google.com ([209.85.210.51]:36776) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hQWde-0005K6-Ne for 35675-done@debbugs.gnu.org; Tue, 14 May 2019 08:34:35 -0400 Received: by mail-ot1-f51.google.com with SMTP id c3so15031137otr.3 for <35675-done@debbugs.gnu.org>; Tue, 14 May 2019 05:34:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=references:user-agent:from:to:cc:subject:in-reply-to:date :message-id:mime-version; bh=S3d0WOarsprbUkdxL4uVnsLAcmAUbAN4ND+3dViWq48=; b=dMlDAI3fx0q8dtkzvsDJNmu4LxMq9sMteF7jCe2DmF4h5rDJnUKVpDeXHGCTu/EGx/ XOILM3y9IKLLlW0jHZsGx841A8Zc72e1shQK8O8jEGFyvVadXeVIhGKiXkjndjFTCkVx sAArR+q4L1FPr7aKxrjSxSuuJJDRD1OHPXbINHiUjsuPNKm9wR3FthDa6jvsHT/8CJp8 Mrz2vcHXt2FM+8RFdZ3XpoGKVn49Xg3GJkgqh+KikSevglU5YDsS0xmVUykgQnRCaUdg N77RfjEkADSuAWA3cm9dP0rWCw+9Grsv2RLwJ2hIhN/Xzrg6otJGyIrG0HXXtbdlm02A NVOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:references:user-agent:from:to:cc:subject :in-reply-to:date:message-id:mime-version; bh=S3d0WOarsprbUkdxL4uVnsLAcmAUbAN4ND+3dViWq48=; b=A/IW6dev5+tn79d35vhA+Su4qIYSCya7ZWDKd1KO3wJz04QpBb4wYSfO6J/SOpLB+O TqJ3ZFoW6v+F9J+R+d1axf7VWQsPxG4UUjCjJ+CLYkWUBncTagbHa7UyFwsrfq+BSCUq AajGcEysAIC2NMarp0Od+dcFcIhogjQAzw7iufW6gkafqq7jxBwhWzx58DMnicMRORmg yCz0hNeTH6T68VK1oDUttoWGL1dv6ELs5TnzaX70QH7n28FSNvO//vGuGgRnAPJ8Rk5I VfzYdJ55ZV9j8ln981sdGWorFMSPCMEX9RZctwJGpOYWZnLnkaDeXeG6qBCFmfS6K1yX s/tw== X-Gm-Message-State: APjAAAUcXdQpcZCBLI03BAMKJaeV1BdlHvD/TZhET3ISecZVpnJgGpOo zQJCAWkpPxZOaluClM8xWbFv5Yf3 X-Google-Smtp-Source: APXvYqwVgwcqEIkSaf0DL7o1wSbF9EC+yYvIreVCgT8+e/ddXRaNES4YbVqw87fNjIl9KCoI0sA4iw== X-Received: by 2002:a9d:5f13:: with SMTP id f19mr2825263oti.219.1557837266615; Tue, 14 May 2019 05:34:26 -0700 (PDT) Received: from mars (cpe-70-114-192-208.austin.res.rr.com. [70.114.192.208]) by smtp.gmail.com with ESMTPSA id r15sm3028891oie.5.2019.05.14.05.34.24 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 14 May 2019 05:34:24 -0700 (PDT) References: <87zhnuuj0y.fsf@gmail.com> <878svcwwwk.fsf@tcd.ie> User-agent: mu4e 1.2.0; emacs 27.0.50 From: Alex Branham To: "Basil L. Contovounesios" Subject: Re: bug#35675: 27.0.50; Is line-number-at-pos unnecessarily slow? In-reply-to: <878svcwwwk.fsf@tcd.ie> Date: Tue, 14 May 2019 07:34:24 -0500 Message-ID: <87a7fp8ban.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 35675-done Cc: 35675-done@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 11 May 2019 at 15:36, Basil L. Contovounesios wrote: > Alex Branham writes: > >> line-number-at-pos basically regex searches forward for \n's and >> counts them up. > > It only does this (via count-lines) if selective-display is t, which is > deprecated and seldom used. Otherwise it uses the value returned by > forward-line (defined in C), which calls find_newline, which AFAIK uses > the buffer's newline cache to some extent (I'm not familiar with its > implementation). Thanks, I missed/misunderstood that part. > Either way, as Eli says, there's often an algorithmic solution to > slowness in uses of count-lines. I'll take that advice and see if there's a more clever way to go about it. Thanks again, Alex From unknown Sun Jun 15 08:57:09 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Wed, 12 Jun 2019 11:24:07 +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