From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: Question: estimating size of a buffer when written to file? Date: Wed, 08 Dec 2021 12:03:07 -0500 Message-ID: References: <3703D806-12C4-4EE6-ADB8-8A006D7AFC35@mit.edu> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="10359"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Cc: "emacs-devel@gnu.org" To: Qiantan Hong Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Dec 08 18:08:46 2021 Return-path: Envelope-to: ged-emacs-devel@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 1mv0Qu-0002MV-8V for ged-emacs-devel@m.gmane-mx.org; Wed, 08 Dec 2021 18:08:44 +0100 Original-Received: from localhost ([::1]:60146 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mv0Qs-0003qN-6N for ged-emacs-devel@m.gmane-mx.org; Wed, 08 Dec 2021 12:08:42 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:50906) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mv0Lc-0001pw-NO for emacs-devel@gnu.org; Wed, 08 Dec 2021 12:03:17 -0500 Original-Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:57697) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mv0La-0002to-0I for emacs-devel@gnu.org; Wed, 08 Dec 2021 12:03:16 -0500 Original-Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 9C26280272; Wed, 8 Dec 2021 12:03:11 -0500 (EST) Original-Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 169728031A; Wed, 8 Dec 2021 12:03:10 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1638982990; bh=z7ABtWS3BsxThxJ7AOfz8ZPQj9X0ViJ/XVvaXPvWFZY=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=a/oSdXUn/Yiv6Ykjw1lzB4nGSBVV78HoHGNmUsxykAcRpXHxJGIGiT5GQuoXK6ATP 9SgKe0AaCYHQLR3Wj6CuEoYV1QBV/q5BQ7jNSmRpg/DyuWWpJOvEp4KCa2QM+zr8pr 2aXVm6sb4q3H2KA6d1Y+jnCZpMVJghoGUQp1grOop0MsKY2KHCDSpEafbTs3ZKovYP /u/DRMmnNQ3Sdq4miqEL6kxjjXu2k/ZE8Fp3Ci83XJlg5mZvjV1qjVLvwny4KxGgly I6UquHo47QgYhssOv0pQB9zJPUkoM2AB8gMnq6IrL0/lNQ7jtIpZz1/5TbJxxXwVPi Tb6OhO+vDnFcg== Original-Received: from alfajor (lechon.iro.umontreal.ca [132.204.27.242]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id E45D2120B02; Wed, 8 Dec 2021 12:03:09 -0500 (EST) In-Reply-To: <3703D806-12C4-4EE6-ADB8-8A006D7AFC35@mit.edu> (Qiantan Hong's message of "Wed, 8 Dec 2021 15:33:06 +0000") Received-SPF: pass client-ip=132.204.25.50; envelope-from=monnier@iro.umontreal.ca; helo=mailscanner.iro.umontreal.ca X-Spam_score_int: -42 X-Spam_score: -4.3 X-Spam_bar: ---- X-Spam_report: (-4.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:281369 Archived-At: > Is there any reliable way to get (or conservatively estimate) > the size of a buffer when written to file? How 'bout your first encode the buffer's content and then write it instead of relying on the write to do the encoding? This way you get to see the size trivially. If you need this estimate faster (e.g. because you may end up not writing the text at all depending on the result), then I think the only way is to multiply the number of chars by the amplification factor that is a property of the encoding (this is used in the C to allocate a destination byte-array that's guaranteed to be large enough. Not sure if we currently expose it to ELisp but it would be easy to do). Stefan