From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Petteri Hintsanen Newsgroups: gmane.emacs.help Subject: Passing buffers to function in elisp Date: Tue, 21 Feb 2023 23:18:25 +0200 Message-ID: <87mt56hg4e.fsf@iki.fi> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="1341"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) To: help-gnu-emacs@gnu.org Cancel-Lock: sha1:Za1ncITx/MXOoL55BqwHvb7YNh4= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Tue Feb 21 22:20:21 2023 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pUa3h-00009i-9f for geh-help-gnu-emacs@m.gmane-mx.org; Tue, 21 Feb 2023 22:20:21 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pUa2A-0006HM-6r; Tue, 21 Feb 2023 16:18:47 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pUa20-0006Gy-R3 for help-gnu-emacs@gnu.org; Tue, 21 Feb 2023 16:18:41 -0500 Original-Received: from ciao.gmane.io ([116.202.254.214]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pUa1x-0007j7-Mc for help-gnu-emacs@gnu.org; Tue, 21 Feb 2023 16:18:35 -0500 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1pUa1v-0008L4-AF for help-gnu-emacs@gnu.org; Tue, 21 Feb 2023 22:18:31 +0100 X-Injected-Via-Gmane: http://gmane.org/ Received-SPF: pass client-ip=116.202.254.214; envelope-from=geh-help-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.249, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.help:142797 Archived-At: Hello list, Alan J. Perlis said "A LISP programmer knows the value of everything, but the cost of nothing." I'm reading some bytes into a temp buffer, like so: (with-temp-buffer (set-buffer-multibyte nil) (insert-file-contents-literally filename nil 0 64000)) then I pass these bytes to functions for processing, like this (func1 (buffer-string)) or sometimes just part of them (func2 (substring (buffer-string) 100 200)) Now: . does this generate garbage? (I believe it does.) . if there are many funcalls like that, will there be lots of garbage? (I guess there will be.) . is this bad style? (I'm afraid it is, hence asking.) Is it better just to assume in functions that the current buffer is the data buffer and work on that, instead of passing data as function arguments? [Why am I doing like this? It is /slightly/ easier to write tests when functions get their data in their arguments.] Also: is it good idea to try to limit the number temp buffers (with-temp-buffer expressions)? Or are they somehow recycled within the elisp interpreter? Thanks, Petteri