develooper Front page | perl.perl5.porters | Postings from August 2021

Re: Robin Hood Hashing for the perl core

Thread Previous | Thread Next
From:
Ed Avis
Date:
August 20, 2021 05:16
Subject:
Re: Robin Hood Hashing for the perl core
Message ID:
DM4PR11MB5247B1C3FFCAD329D55B124C9DFF9@DM4PR11MB5247.namprd11.prod.outlook.com
Thanks for your reply.  I imagined that if you use the pointer address as the hash key, you'd need a separate field storing the type of object or the package name it's blessed into.  That's needed to always return the same string as when it was first inserted.  Having the separate lookup adds overhead, but I think it would still be a win compared to making, hashing, and storing the string each time.

You make a good point that the stringification of an object can change while its address does not.  I would say that using such objects as hash keys is asking for trouble to start with.  Of course, it has to be handled if the new implementation is to be 100% compatible.  Perhaps one day, the semantics could change a little so that if an object's stringification changes, the stringified hash key also changes but the object retains its position in the hash, since it's hashed by identity.  But that would be out of scope for the current work.

The question of "value" types like Math::BigInt is a bigger reason why it's hard to change the current behaviour.  I think it's unfortunate; Perl has painted itself into a corner with forcing all hash keys to be strings and losing the original identity, and there's no clear path to change it without a compatibility break, when in my opinion using an object as a hash key and getting back the same object falls under "easy things should be easy".


This email and any files transmitted with it are CONFIDENTIAL and are intended solely for the use of the individual(s) or entity to whom they are addressed. Any unauthorised copying, disclosure or distribution of the material within this email is strictly forbidden. Any views or opinions presented within this email are solely those of the author and do not necessarily represent those of PGIM Limited, QMA Wadhwani LLP or their affiliates unless otherwise specifically stated. An electronic message is not binding on its sender. Any message referring to a binding agreement must be confirmed in writing and duly signed. If you have received this email in error, please notify the sender immediately and delete the original. Telephone, electronic and other communications and conversations with PGIM Limited, QMA Wadhwani LLP and/or their associated persons may be recorded and retained. PGIM Limited and QMA Wadhwani LLP are authorised and regulated by the Financial Conduct Authority. PGIM Limited (registered in England No. 3809039) has its registered office at Grand Buildings, 1-3 Strand, Trafalgar Square, London WC2N 5HR and QMA Wadhwani LLP (registered in England No. OC303168) has its registered office at 9th Floor, Orion House, 5 Upper St. Martin's Lane, London, England, WC2H 9EA.

Please note that your personal information may be stored and processed in any country where we have facilities or in which we engage service providers. If you provide personal information to us by email or otherwise, you consent to the transfer of that information to countries outside of your country of residence and these countries may have different data protection rules than your country.

To learn about our privacy policies, please use this link<https://www.pgim.com/disclaimer/privacy-center> to read the Privacy Notices.

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About