From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.devel Subject: Re: [Emacs-diffs] master f18af6c: Audit use of lsh and fix glitches Date: Sat, 25 Aug 2018 14:24:15 -0700 Organization: UCLA Computer Science Department Message-ID: <8bd5b4eb-f395-e4d9-500d-5df78bcc597c@cs.ucla.edu> References: <20180821204437.16880.99611@vcs0.savannah.gnu.org> <20180821204439.62390209A6@vcs0.savannah.gnu.org> <53d0c06e-2383-955a-0a17-650fd842b483@cornell.edu> <4c677990-0d1c-acdb-596c-2bce02756a61@cs.ucla.edu> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------29D3F7D0F89848EF5199EA74" X-Trace: blaine.gmane.org 1535232184 11618 195.159.176.226 (25 Aug 2018 21:23:04 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sat, 25 Aug 2018 21:23:04 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 Cc: Stefan Monnier , emacs-devel@gnu.org To: Pip Cet Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Aug 25 23:22:59 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 1ftg1I-0002nB-9y for ged-emacs-devel@m.gmane.org; Sat, 25 Aug 2018 23:22:56 +0200 Original-Received: from localhost ([::1]:47106 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ftg3O-0006FZ-Hs for ged-emacs-devel@m.gmane.org; Sat, 25 Aug 2018 17:25:06 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:48552) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ftg2h-0006FU-JQ for emacs-devel@gnu.org; Sat, 25 Aug 2018 17:24:24 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ftg2e-0007Dp-4y for emacs-devel@gnu.org; Sat, 25 Aug 2018 17:24:23 -0400 Original-Received: from zimbra.cs.ucla.edu ([131.179.128.68]:57400) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ftg2d-0007CM-Lx for emacs-devel@gnu.org; Sat, 25 Aug 2018 17:24:19 -0400 Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 605B416081D; Sat, 25 Aug 2018 14:24:17 -0700 (PDT) Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id htwsleJn_Al9; Sat, 25 Aug 2018 14:24:15 -0700 (PDT) Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id E483F161170; Sat, 25 Aug 2018 14:24:15 -0700 (PDT) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id qjPGjrXxgEeA; Sat, 25 Aug 2018 14:24:15 -0700 (PDT) Original-Received: from [192.168.1.9] (cpe-23-242-74-103.socal.res.rr.com [23.242.74.103]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 6F4A216081D; Sat, 25 Aug 2018 14:24:15 -0700 (PDT) In-Reply-To: Content-Language: en-US X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 131.179.128.68 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:228916 Archived-At: This is a multi-part message in MIME format. --------------29D3F7D0F89848EF5199EA74 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Pip Cet wrote: > I'm already using a separate tag value for bignums, though it might > help to use tag value 0 instead of a nonzero one (but then Qnil > couldn't be all-zeroes in memory). We'd have to measure it, as there is also a benefit when NILP and initialization to Qnil are fast. > I've discovered that the sequence gcc (trunk) emits for a mask-and-compare is: > mov %rax, %rbx > and $7, %rbx > cmp $7, %rbx > where I would use > lea 1(%rax), %ebx > test $7, %bl > > I can force the latter by testing ((char)((int)(XLI (x) + 8 - > Lisp_String)) & 7) == 0 rather than the (equivalent, AFAICS) (XLI (x) > & 7) == Lisp_String (sometimes gcc uses a longer sequence, though). At > this point, I think gcc should be emitting the shorter two-insn > sequence for both C expressions. I agree, and filed a GCC bug report about it, here: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87104 > With this "improvement", the code size difference is 13184 bytes. I'm > unable to measure a performance difference, since it is lost in the > noise. I tried a similar microoptimization on the Emacs trunk, and it made Emacs about 0.4% faster on my platform. This seems like a clear win pretty much everywhere, regardless of what we do about eq vs eql, so I installed the attached patch into master. > I've benchmarked the hash-cons approach, though the implementation I > used was rather trivial, and simple bignum calculations appear to be > about 20-50% slower. Again, I expect that number to increase once the > extra copy in make_number is removed. (For floats, the slowdown is > worse.) Ouch. These figures are making me more inclined to stick with what we have in master, namely the Common Lisp and Scheme tradition that eq is a finer comparison operation than eql is, when these comparisons are applied to bignums and/or to floats. Of course we can continue to guarantee the traditional eq semantics on fixnums. --------------29D3F7D0F89848EF5199EA74 Content-Type: text/plain; charset=UTF-8; name="0001-Improve-performance-of-CONSP-FIXNUMP-etc.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Improve-performance-of-CONSP-FIXNUMP-etc.txt" RnJvbSBjY2RiMDhlZjRlZDhmOTZlNzlhYTA2Y2Y1ZTgwNmM5YzQ4N2Q1OGFkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBTYXQsIDI1IEF1ZyAyMDE4IDEzOjM5OjE4IC0wNzAwClN1YmplY3Q6IFtQQVRD SF0gSW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBDT05TUCwgRklYTlVNUCwgZXRjLgpNSU1FLVZl cnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29u dGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKT3B0aW1pemF0aW9uIG9wcG9ydHVuaXR5 IG5vdGVkIGJ5IFBpcCBDZXQgaW46Cmh0dHBzOi8vbGlzdHMuZ251Lm9yZy9yL2VtYWNzLWRl dmVsLzIwMTgtMDgvbXNnMDA4MjguaHRtbApPbiBteSBwbGF0Zm9ybSAoRmVkb3JhIDI4IHg4 Ni02NCwgQU1EIFBoZW5vbSBJSSBYNCA5MTBlLAp1c2VyK3N5c3RlbSB0aW1lKSwgdGhpcyBp bXByb3ZlZCDigJhtYWtlIGNvbXBpbGUtYWx3YXlz4oCZCnBlcmZvcm1hbmNlIGJ5IDAuNCUg YW5kIHNocmFuayB0ZXh0IHNpemUgYnkgYSBzaW1pbGFyIGFtb3VudC4KKiBzcmMvbGlzcC5o IChUQUdHRURQLCBsaXNwX2hfVEFHR0VEUCk6IE5ldyBtYWNyb3MgYW5kIGZ1bmN0aW9uLgoo bGlzcF9oX0NPTlNQLCBsaXNwX2hfRkxPQVRQLCBsaXNwX2hfU1lNQk9MUCkKKGxpc3BfaF9W RUNUT1JMSUtFUCwgbWFrZV9saXNwX3B0ciwgU1RSSU5HUCk6IFVzZSB0aGVtLgoobGlzcF9o X0ZJWE5VTVApOiBVc2UgdGhlIHNhbWUgaWRlYSB0aGF0IGxpc3BfaF9UQUdHRURQIHVzZXMu Ci0tLQogc3JjL2xpc3AuaCB8IDMxICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0K IDEgZmlsZSBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9saXNwLmggYi9zcmMvbGlzcC5oCmluZGV4IGJjYTRkZmJiNjAuLmZi MTFhMTFmZGEgMTAwNjQ0Ci0tLSBhL3NyYy9saXNwLmgKKysrIGIvc3JjL2xpc3AuaApAQCAt MzYyLDEwICszNjIsMTMgQEAgdHlwZWRlZiBFTUFDU19JTlQgTGlzcF9Xb3JkOwogI2RlZmlu ZSBsaXNwX2hfQ0hFQ0tfU1lNQk9MKHgpIENIRUNLX1RZUEUgKFNZTUJPTFAgKHgpLCBRc3lt Ym9scCwgeCkKICNkZWZpbmUgbGlzcF9oX0NIRUNLX1RZUEUob2ssIHByZWRpY2F0ZSwgeCkg XAogICAgKChvaykgPyAodm9pZCkgMCA6IHdyb25nX3R5cGVfYXJndW1lbnQgKHByZWRpY2F0 ZSwgeCkpCi0jZGVmaW5lIGxpc3BfaF9DT05TUCh4KSAoWFRZUEUgKHgpID09IExpc3BfQ29u cykKKyNkZWZpbmUgbGlzcF9oX0NPTlNQKHgpIFRBR0dFRFAgKHgsIExpc3BfQ29ucykKICNk ZWZpbmUgbGlzcF9oX0VRKHgsIHkpIChYTEkgKHgpID09IFhMSSAoeSkpCi0jZGVmaW5lIGxp c3BfaF9GTE9BVFAoeCkgKFhUWVBFICh4KSA9PSBMaXNwX0Zsb2F0KQotI2RlZmluZSBsaXNw X2hfRklYTlVNUCh4KSAoKFhUWVBFICh4KSAmIChMaXNwX0ludDAgfCB+TGlzcF9JbnQxKSkg PT0gTGlzcF9JbnQwKQorI2RlZmluZSBsaXNwX2hfRklYTlVNUCh4KSBcCisgICAoISAoKCh1 bnNpZ25lZCkgKFhMSSAoeCkgPj4gKFVTRV9MU0JfVEFHID8gMCA6IEZJWE5VTV9CSVRTKSkg XAorCS0gKHVuc2lnbmVkKSAoTGlzcF9JbnQwID4+ICFVU0VfTFNCX1RBRykpIFwKKyAgICAg ICAmICgoMSA8PCBJTlRUWVBFQklUUykgLSAxKSkpCisjZGVmaW5lIGxpc3BfaF9GTE9BVFAo eCkgVEFHR0VEUCAoeCwgTGlzcF9GbG9hdCkKICNkZWZpbmUgbGlzcF9oX05JTFAoeCkgRVEg KHgsIFFuaWwpCiAjZGVmaW5lIGxpc3BfaF9TRVRfU1lNQk9MX1ZBTChzeW0sIHYpIFwKICAg IChlYXNzZXJ0ICgoc3ltKS0+dS5zLnJlZGlyZWN0ID09IFNZTUJPTF9QTEFJTlZBTCksIFwK QEAgLTM3NSw4ICszNzgsMTIgQEAgdHlwZWRlZiBFTUFDU19JTlQgTGlzcF9Xb3JkOwogI2Rl ZmluZSBsaXNwX2hfU1lNQk9MX1RSQVBQRURfV1JJVEVfUChzeW0pIChYU1lNQk9MIChzeW0p LT51LnMudHJhcHBlZF93cml0ZSkKICNkZWZpbmUgbGlzcF9oX1NZTUJPTF9WQUwoc3ltKSBc CiAgICAoZWFzc2VydCAoKHN5bSktPnUucy5yZWRpcmVjdCA9PSBTWU1CT0xfUExBSU5WQUwp LCAoc3ltKS0+dS5zLnZhbC52YWx1ZSkKLSNkZWZpbmUgbGlzcF9oX1NZTUJPTFAoeCkgKFhU WVBFICh4KSA9PSBMaXNwX1N5bWJvbCkKLSNkZWZpbmUgbGlzcF9oX1ZFQ1RPUkxJS0VQKHgp IChYVFlQRSAoeCkgPT0gTGlzcF9WZWN0b3JsaWtlKQorI2RlZmluZSBsaXNwX2hfU1lNQk9M UCh4KSBUQUdHRURQICh4LCBMaXNwX1N5bWJvbCkKKyNkZWZpbmUgbGlzcF9oX1RBR0dFRFAo YSwgdGFnKSBcCisgICAoISAoKCh1bnNpZ25lZCkgKFhMSSAoYSkgPj4gKFVTRV9MU0JfVEFH ID8gMCA6IFZBTEJJVFMpKSBcCisJLSAodW5zaWduZWQpICh0YWcpKSBcCisgICAgICAgJiAo KDEgPDwgR0NUWVBFQklUUykgLSAxKSkpCisjZGVmaW5lIGxpc3BfaF9WRUNUT1JMSUtFUCh4 KSBUQUdHRURQICh4LCBMaXNwX1ZlY3Rvcmxpa2UpCiAjZGVmaW5lIGxpc3BfaF9YQ0FSKGMp IFhDT05TIChjKS0+dS5zLmNhcgogI2RlZmluZSBsaXNwX2hfWENEUihjKSBYQ09OUyAoYykt PnUucy51LmNkcgogI2RlZmluZSBsaXNwX2hfWENPTlMoYSkgXApAQCAtNDM1LDYgKzQ0Miw3 IEBAIHR5cGVkZWYgRU1BQ1NfSU5UIExpc3BfV29yZDsKICMgZGVmaW5lIFNZTUJPTF9UUkFQ UEVEX1dSSVRFX1Aoc3ltKSBsaXNwX2hfU1lNQk9MX1RSQVBQRURfV1JJVEVfUCAoc3ltKQog IyBkZWZpbmUgU1lNQk9MX1ZBTChzeW0pIGxpc3BfaF9TWU1CT0xfVkFMIChzeW0pCiAjIGRl ZmluZSBTWU1CT0xQKHgpIGxpc3BfaF9TWU1CT0xQICh4KQorIyBkZWZpbmUgVEFHR0VEUChh LCB0YWcpIGxpc3BfaF9UQUdHRURQIChhLCB0YWcpCiAjIGRlZmluZSBWRUNUT1JMSUtFUCh4 KSBsaXNwX2hfVkVDVE9STElLRVAgKHgpCiAjIGRlZmluZSBYQ0FSKGMpIGxpc3BfaF9YQ0FS IChjKQogIyBkZWZpbmUgWENEUihjKSBsaXNwX2hfWENEUiAoYykKQEAgLTY0Nyw2ICs2NTUs MTUgQEAgSU5MSU5FIGVudW0gTGlzcF9UeXBlCiAjZW5kaWYKIH0KIAorLyogVHJ1ZSBpZiBB IGhhcyB0eXBlIHRhZyBUQUcuCisgICBFcXVpdmFsZW50IHRvIFhUWVBFIChhKSA9PSBUQUcs IGJ1dCBvZnRlbiBmYXN0ZXIuICAqLworCitJTkxJTkUgYm9vbAorKFRBR0dFRFApIChMaXNw X09iamVjdCBhLCBlbnVtIExpc3BfVHlwZSB0YWcpCit7CisgIHJldHVybiBsaXNwX2hfVEFH R0VEUCAoYSwgdGFnKTsKK30KKwogSU5MSU5FIHZvaWQKIChDSEVDS19UWVBFKSAoaW50IG9r LCBMaXNwX09iamVjdCBwcmVkaWNhdGUsIExpc3BfT2JqZWN0IHgpCiB7CkBAIC0xMTMxLDcg KzExNDgsNyBAQCBJTkxJTkUgTGlzcF9PYmplY3QKIG1ha2VfbGlzcF9wdHIgKHZvaWQgKnB0 ciwgZW51bSBMaXNwX1R5cGUgdHlwZSkKIHsKICAgTGlzcF9PYmplY3QgYSA9IFRBR19QVFIg KHR5cGUsIHB0cik7Ci0gIGVhc3NlcnQgKFhUWVBFIChhKSA9PSB0eXBlICYmIFhVTlRBRyAo YSwgdHlwZSwgY2hhcikgPT0gcHRyKTsKKyAgZWFzc2VydCAoVEFHR0VEUCAoYSwgdHlwZSkg JiYgWFVOVEFHIChhLCB0eXBlLCBjaGFyKSA9PSBwdHIpOwogICByZXR1cm4gYTsKIH0KIApA QCAtMTM2NCw3ICsxMzgxLDcgQEAgdmVyaWZ5IChhbGlnbm9mIChzdHJ1Y3QgTGlzcF9TdHJp bmcpICUgR0NBTElHTk1FTlQgPT0gMCk7CiBJTkxJTkUgYm9vbAogU1RSSU5HUCAoTGlzcF9P YmplY3QgeCkKIHsKLSAgcmV0dXJuIFhUWVBFICh4KSA9PSBMaXNwX1N0cmluZzsKKyAgcmV0 dXJuIFRBR0dFRFAgKHgsIExpc3BfU3RyaW5nKTsKIH0KIAogSU5MSU5FIHZvaWQKLS0gCjIu MTcuMQoK --------------29D3F7D0F89848EF5199EA74--