From unknown Wed Jun 25 10:47:35 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#1229 <1229@debbugs.gnu.org> To: bug#1229 <1229@debbugs.gnu.org> Subject: Status: generate-new-buffer-name could be more efficient Reply-To: bug#1229 <1229@debbugs.gnu.org> Date: Wed, 25 Jun 2025 17:47:35 +0000 retitle 1229 generate-new-buffer-name could be more efficient reassign 1229 emacs submitter 1229 Glenn Morris severity 1229 wishlist thanks From rgm@gnu.org Thu Oct 23 00:01:36 2008 X-Spam-Checker-Version: SpamAssassin 3.2.3-bugs.debian.org_2005_01_02 (2007-08-08) on rzlab.ucr.edu X-Spam-Level: X-Spam-Status: No, score=-13.8 required=4.0 tests=AWL,BAYES_00,HAS_PACKAGE, RCVD_IN_DNSWL_MED,X_DEBBUGS_NO_ACK autolearn=ham version=3.2.3-bugs.debian.org_2005_01_02 Received: (at quiet) by emacsbugs.donarmstrong.com; 23 Oct 2008 07:01:36 +0000 Received: from fencepost.gnu.org (fencepost.gnu.org [140.186.70.10]) by rzlab.ucr.edu (8.13.8/8.13.8/Debian-3) with ESMTP id m9N71XMD027599 for ; Thu, 23 Oct 2008 00:01:34 -0700 Received: from rgm by fencepost.gnu.org with local (Exim 4.67) (envelope-from ) id 1Ksu9h-0000d3-SN; Thu, 23 Oct 2008 02:58:49 -0400 From: Glenn Morris To: quiet Subject: generate-new-buffer-name could be more efficient X-Spook: MD2 Clinton UFO JPL Vickie Weaver warfare SP4 INSCOM X-Ran: M-"#I&fA+rP]dWV.o-I43]AUVlFo/|diFG(bt5@a3}xd8lmRN$Uo'`n>qZ-r"A8$l=kl3: X-Hue: magenta X-Debbugs-No-Ack: yes X-Attribution: GM Date: Thu, 23 Oct 2008 02:58:49 -0400 Message-ID: User-Agent: Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Package: emacs Severity: wishlist Version: 23.0.60 As mentioned in bug#122, generate-new-buffer-name could be more efficient for invisible buffers: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=122#182 Oh, yes, of course. When generate-new-buffer-name is called for a user-visible buffer, fixing this would be probably too much trouble for too little benefit. But for internal buffers, whose precise name doesn't actually matter, we should use a different strategy, where we immediately start by adding a random suffix to the buffer name, so as to avoid conflicts. From debbugs-submit-bounces@debbugs.gnu.org Tue Jul 03 03:37:59 2012 Received: (at 1229) by debbugs.gnu.org; 3 Jul 2012 07:37:59 +0000 Received: from localhost ([127.0.0.1]:44181 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SlxgN-0006K9-92 for submit@debbugs.gnu.org; Tue, 03 Jul 2012 03:37:59 -0400 Received: from fencepost.gnu.org ([208.118.235.10]:42224) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SlxgL-0006K3-Vk for 1229@debbugs.gnu.org; Tue, 03 Jul 2012 03:37:58 -0400 Received: from rgm by fencepost.gnu.org with local (Exim 4.71) (envelope-from ) id 1Slxbo-0002Fz-Hp; Tue, 03 Jul 2012 03:33:16 -0400 From: Glenn Morris To: 1229@debbugs.gnu.org Subject: Re: bug#1229: generate-new-buffer-name could be more efficient References: X-Spook: Operation Iraqi Freedom CDC smuggle Forte Treasury X-Ran: cxX'U-j9==.1R^63Y@aFFjz-Y3tbk3r|S_bMX; User-Agent: Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Spam-Score: -6.9 (------) X-Debbugs-Envelope-To: 1229 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.9 (------) Stefan Monnier wrote: > When generate-new-buffer-name is called for a user-visible buffer, > fixing this would be probably too much trouble for too little > benefit. But for internal buffers, whose precise name doesn't > actually matter, we should use a different strategy, where we > immediately start by adding a random suffix to the buffer name, so as > to avoid conflicts. Something like the following? Timing results for me with this change: (let ((start (current-time))) (dotimes (i 500) (generate-new-buffer "a")) (float-time (time-since start))) -> 0.55 seconds (and 4.3 seconds the next time) Repeating with " a" instead of "a", it takes 0.025 seconds. *** src/lisp.h 2012-06-30 09:13:54 +0000 --- src/lisp.h 2012-07-03 02:41:45 +0000 *************** *** 2473,2478 **** --- 2473,2479 ---- EXFUN (Fremhash, 2); EXFUN (Fidentity, 1); + EXFUN (Frandom, 1); EXFUN (Flength, 1); EXFUN (Fappend, MANY); EXFUN (Fconcat, MANY); *** src/buffer.c 2012-07-03 03:57:52 +0000 --- src/buffer.c 2012-07-03 07:24:11 +0000 *************** *** 838,847 **** Otherwise modify name by appending `', incrementing NUMBER \(starting at 2) until an unused name is found, and then return that name. Optional second argument IGNORE specifies a name that is okay to use (if ! it is in the sequence to be tried) even if a buffer with that name exists. */) (register Lisp_Object name, Lisp_Object ignore) { ! register Lisp_Object gentemp, tem; ptrdiff_t count; char number[INT_BUFSIZE_BOUND (ptrdiff_t) + sizeof "<>"]; --- 838,852 ---- Otherwise modify name by appending `', incrementing NUMBER \(starting at 2) until an unused name is found, and then return that name. Optional second argument IGNORE specifies a name that is okay to use (if ! it is in the sequence to be tried) even if a buffer with that name exists. ! ! If NAME begins with a space (i.e., a buffer that is not normally ! visible to users), then for efficiency reasons if buffer NAME ! already exists a random number is first appended to NAME, to speed ! up finding a new buffer. */) (register Lisp_Object name, Lisp_Object ignore) { ! register Lisp_Object gentemp, tem, tem2; ptrdiff_t count; char number[INT_BUFSIZE_BOUND (ptrdiff_t) + sizeof "<>"]; *************** *** 854,864 **** if (NILP (tem)) return name; count = 1; while (1) { sprintf (number, "<%"pD"d>", ++count); ! gentemp = concat2 (name, build_string (number)); tem = Fstring_equal (gentemp, ignore); if (!NILP (tem)) return gentemp; --- 859,880 ---- if (NILP (tem)) return name; + if (!strncmp (SSDATA (name), " ", 1)) + { + sprintf (number, "-%"pD"d", Frandom (make_number (999999))); + tem2 = concat2 (name, build_string (number)); + tem = Fget_buffer (tem2); + if (NILP (tem)) + return tem2; + } + else + tem2 = name; + count = 1; while (1) { sprintf (number, "<%"pD"d>", ++count); ! gentemp = concat2 (tem2, build_string (number)); tem = Fstring_equal (gentemp, ignore); if (!NILP (tem)) return gentemp; From debbugs-submit-bounces@debbugs.gnu.org Tue Jul 03 10:03:15 2012 Received: (at 1229) by debbugs.gnu.org; 3 Jul 2012 14:03:15 +0000 Received: from localhost ([127.0.0.1]:45291 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Sm3hD-0008Gk-7X for submit@debbugs.gnu.org; Tue, 03 Jul 2012 10:03:15 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:9256) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Sm3hA-0008Gc-W0 for 1229@debbugs.gnu.org; Tue, 03 Jul 2012 10:03:13 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAG6Zu09MCquH/2dsb2JhbABEtBGBCIIVAQEEAVYjBQsLDiYSFBgNJIgcBboJkEQDozOBWIMF X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="192534661" Received: from 76-10-171-135.dsl.teksavvy.com (HELO pastel.home) ([76.10.171.135]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 03 Jul 2012 09:58:31 -0400 Received: by pastel.home (Postfix, from userid 20848) id B35394E706; Tue, 3 Jul 2012 09:58:30 -0400 (EDT) From: Stefan Monnier To: Glenn Morris Subject: Re: bug#1229: generate-new-buffer-name could be more efficient Message-ID: References: <7bojxfgeb.fsf@fencepost.gnu.org> Date: Tue, 03 Jul 2012 09:58:30 -0400 In-Reply-To: <7bojxfgeb.fsf@fencepost.gnu.org> (Glenn Morris's message of "Tue, 03 Jul 2012 03:33:16 -0400") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.1.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: 1229 Cc: 1229@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) > Something like the following? Yes. > + sprintf (number, "-%"pD"d", Frandom (make_number (999999))); I don't like this arbitrary constant. Maybe we could use something like "N * Flength (Vbuffer_alist)". Stefan From debbugs-submit-bounces@debbugs.gnu.org Tue Jul 03 13:25:57 2012 Received: (at 1229) by debbugs.gnu.org; 3 Jul 2012 17:25:57 +0000 Received: from localhost ([127.0.0.1]:45558 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Sm6rN-0005EP-0x for submit@debbugs.gnu.org; Tue, 03 Jul 2012 13:25:57 -0400 Received: from fencepost.gnu.org ([208.118.235.10]:56601) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Sm6rL-0005EJ-UW for 1229@debbugs.gnu.org; Tue, 03 Jul 2012 13:25:56 -0400 Received: from rgm by fencepost.gnu.org with local (Exim 4.71) (envelope-from ) id 1Sm6mm-0007zD-OI; Tue, 03 Jul 2012 13:21:12 -0400 From: Glenn Morris To: Stefan Monnier Subject: Re: bug#1229: generate-new-buffer-name could be more efficient References: <7bojxfgeb.fsf@fencepost.gnu.org> X-Spook: bce [Hello to all my friends and fans in domestic X-Ran: a.T2B,~p+M)S_c5SRG9\^9[oLd4J+_H7t"6hGS,ia,gic3]'(`e3K1*.Jbo&u_a'n'1b~3 X-Hue: blue X-Debbugs-No-Ack: yes X-Attribution: GM Date: Tue, 03 Jul 2012 13:21:12 -0400 In-Reply-To: (Stefan Monnier's message of "Tue, 03 Jul 2012 09:58:30 -0400") Message-ID: User-Agent: Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Spam-Score: -6.9 (------) X-Debbugs-Envelope-To: 1229 Cc: 1229@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.9 (------) Stefan Monnier wrote: >> + sprintf (number, "-%"pD"d", Frandom (make_number (999999))); > > I don't like this arbitrary constant. Maybe we could use something > like "N * Flength (Vbuffer_alist)". OK; though personally I don't see that it matters. IIUC, mkstemp, fileio.c's make_temp_name, etc, all use a finite number of possible random states, and they don't have the <2>... fallback that generate-new-buffer-name does. (Another option is to extract the random scheme that make_temp_name uses to a separate function and use that here too.) What do you want the arbitrary constant N to be ? :) From debbugs-submit-bounces@debbugs.gnu.org Tue Jul 03 13:31:55 2012 Received: (at 1229) by debbugs.gnu.org; 3 Jul 2012 17:31:55 +0000 Received: from localhost ([127.0.0.1]:45586 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Sm6x9-0006Cd-25 for submit@debbugs.gnu.org; Tue, 03 Jul 2012 13:31:55 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:20260) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Sm6x8-0006CX-11 for 1229@debbugs.gnu.org; Tue, 03 Jul 2012 13:31:54 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAG6Zu09MCquH/2dsb2JhbABEtBGBCIIVAQEEAVYjEAsOJhIUGA0kiBwFugmQRAOjM4FYgwU X-IronPort-AV: E=Sophos;i="4.75,637,1330923600"; d="scan'208";a="192556128" Received: from 76-10-171-135.dsl.teksavvy.com (HELO pastel.home) ([76.10.171.135]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 03 Jul 2012 13:27:11 -0400 Received: by pastel.home (Postfix, from userid 20848) id F08694E706; Tue, 3 Jul 2012 13:27:10 -0400 (EDT) From: Stefan Monnier To: Glenn Morris Subject: Re: bug#1229: generate-new-buffer-name could be more efficient Message-ID: References: <7bojxfgeb.fsf@fencepost.gnu.org> Date: Tue, 03 Jul 2012 13:27:10 -0400 In-Reply-To: (Stefan Monnier's message of "Tue, 03 Jul 2012 09:58:30 -0400") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.1.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: 1229 Cc: 1229@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) >> Something like the following? > Yes. >> + sprintf (number, "-%"pD"d", Frandom (make_number (999999))); > I don't like this arbitrary constant. Maybe we could use something > like "N * Flength (Vbuffer_alist)". Not sure what I was smoking, sorry, just ignore that comment. Stefan From debbugs-submit-bounces@debbugs.gnu.org Tue Jul 03 13:54:50 2012 Received: (at control) by debbugs.gnu.org; 3 Jul 2012 17:54:50 +0000 Received: from localhost ([127.0.0.1]:45651 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Sm7JJ-0006j6-Nb for submit@debbugs.gnu.org; Tue, 03 Jul 2012 13:54:50 -0400 Received: from fencepost.gnu.org ([208.118.235.10]:57062) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Sm7JI-0006j0-8N for control@debbugs.gnu.org; Tue, 03 Jul 2012 13:54:48 -0400 Received: from rgm by fencepost.gnu.org with local (Exim 4.71) (envelope-from ) id 1Sm7Ej-0003vN-Bw for control@debbugs.gnu.org; Tue, 03 Jul 2012 13:50:05 -0400 Date: Tue, 03 Jul 2012 13:50:05 -0400 Message-Id: Subject: control message for bug 1229 To: X-Mailer: mail (GNU Mailutils 2.1) From: Glenn Morris X-Spam-Score: -6.9 (------) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.9 (------) close 1229 24.2 From unknown Wed Jun 25 10:47:35 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, 01 Aug 2012 11:24:03 +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