From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: Making 'eq' == 'eql' in bignum branch Date: Sat, 28 Jul 2018 10:26:42 -0400 Message-ID: References: <29f933ac-a6bf-8742-66a7-0a9d6d3e5a88@disroot.org> <83bmecy6fx.fsf@gnu.org> <0d3175d8-d996-651e-b221-71978bde3a65@cs.ucla.edu> <87tvpdnzgy.fsf@tromey.com> <4c2a814f-c254-29e5-39cf-11b5f2e5c9c8@cs.ucla.edu> <49d8ba62-c9a5-9203-d882-8e900b441ff3@cs.ucla.edu> <8e0320d9-e0d0-2b57-57cc-2df4399f133c@cs.ucla.edu> <87lgaio7xd.fsf@tromey.com> <877em1cb0i.fsf@tromey.com> <765767b2-d2e5-a9a6-f724-d58ecf4847bb@cs.ucla.edu> <76081b5d-8c10-0a37-2c97-d4864c0faa80@cs.ucla.edu> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: blaine.gmane.org 1532787932 3204 195.159.176.226 (28 Jul 2018 14:25:32 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sat, 28 Jul 2018 14:25:32 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Jul 28 16:25:28 2018 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fjQ9v-0000j6-P3 for ged-emacs-devel@m.gmane.org; Sat, 28 Jul 2018 16:25:27 +0200 Original-Received: from localhost ([::1]:45506 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fjQC2-0005Dg-7K for ged-emacs-devel@m.gmane.org; Sat, 28 Jul 2018 10:27:38 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:50522) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fjQBN-0005Da-9R for emacs-devel@gnu.org; Sat, 28 Jul 2018 10:26:58 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fjQBK-0003tw-5b for emacs-devel@gnu.org; Sat, 28 Jul 2018 10:26:57 -0400 Original-Received: from [195.159.176.226] (port=51566 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fjQBJ-0003qv-Tn for emacs-devel@gnu.org; Sat, 28 Jul 2018 10:26:54 -0400 Original-Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1fjQ9B-0008Hu-0P for emacs-devel@gnu.org; Sat, 28 Jul 2018 16:24:41 +0200 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 26 Original-X-Complaints-To: usenet@blaine.gmane.org Cancel-Lock: sha1:W3ZSl6yealpx3VMrFV58auaUPSc= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 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.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:227922 Archived-At: > suffers only a 2.3% slowdown, better than the 4% slowdown Stefan mentioned > with his simpler patch. I'm afraid you might be comparing apples and pears, since the relative cost may vary substantially depending on the CPU's architecture. Have you tried to measure the slowdown of my patch on your machine? > Stefan, have you thought about hashing floating-point objects instead, so > that comparing pointers suffices for eql, and eq becomes equivalent to eql > in a different way? No I have not considered this trade-off carefully. It's true that floats aren't used very often, but it would make floats enormously more expensive both in CPU and memory resources. Currently, they cost 8 bytes of allocated heap, and currently our hash-tables cost about 6 words per entry (i.e. 48 bytes per entry on 64bit systems). Clearly we could cut that down for hash-consing uses (where key==value), but it's still pretty bad. > I still see a problem there in your simpler patch, since cmpfn_eql isn't > used in the eq case, when hashing floating-point values. Good spotting, thanks. Stefan