Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #386000

Re: Good hash for pointers

From Tim Rentsch <tr.17687@z991.linuxsc.com>
Newsgroups comp.lang.c
Subject Re: Good hash for pointers
Date 2024-06-15 20:32 -0700
Organization A noiseless patient Spider
Message-ID <86h6dtlfzs.fsf@linuxsc.com> (permalink)
References (12 earlier) <v3vkvp$268b2$1@raubtier-asyl.eternal-september.org> <v4441o$3f3lt$1@raubtier-asyl.eternal-september.org> <v45hmd$3t9dq$1@dont-email.me> <86le3dlh24.fsf@linuxsc.com> <20240610151453.000027ef@yahoo.com>

Show all headers | View raw


Michael S <already5chosen@yahoo.com> writes:

> On Sun, 09 Jun 2024 18:31:15 -0700
> Tim Rentsch <tr.17687@z991.linuxsc.com> wrote:
>
>> Malcolm McLean <malcolm.arthur.mclean@gmail.com> writes:
>>
>>> On 09/06/2024 12:35, Bonita Montero wrote:
>>>
>>>> uint64_t MichaelsHash( uint64_t key )
>>>> {
>>>>  __m128i xkey = _mm_set_epi64x( key, 42 );
>>>>  using bar_t = pair<uint64_t, uint64_t>;
>>>>  static bar_t const bars[8] =
>>>>  {
>>>>   { 0xBB09BBCC90B24BF2, 0x825C622FF2792A01 },
>>>>   { 0x94F0535CB06D4060, 0x939C756246DBFD1D },
>>>>   { 0x5B835E01A7E14CA1, 0xAC2BDAFC023CDD06 },
>>>>   { 0xE0B6A4735B774AEC, 0x9CAFB43E7DDE494C },
>>>>  };
>>>>  for( bar_t const &bar : bars )
>>>>   xkey = _mm_aesenc_si128( xkey, _mm_set_epi64x( bar.second,
>>>> bar.first ) );
>>>>  return xkey.m128i_u64[0];
>>>> }
>>>>
>>>> Now the code is about six times faster and I get a eight times
>>>> speedup over single-threaded processing with the same code.  Of
>>>> course the results are still the same.
>>>
>>> I have your permission to drop that in?
>>
>> Note that this code was cribbed from Michael S.
>
> I don't permit to use my name in variant, modified by Bonita.
> I prefer if my name is not used even on my own variant.
> This code was never intended for production use.  It is intended for use
> as reference, as something that is "certainly random enough and then
> many billions times more than enough".  It is much much slower than
> necessary for non-crypto hash.  [...]

The problem with using the posted AES code (of either version) is
that it is not sufficiently portable nor does it comply with C90
rules.  How fast or slow the code runs might be a reason not to
use it, but it is not necessarily a reason not to use it - that
depends on a variety of factors, not the least of which is how
fast it actually is in the environments under consideration.

>> If you
>> think it's important to ask permission, I think he is
>> the one you should be asking.
>>
>> By the way, I thought you were looking for code that works
>> in standard C, and acceptable under C90 rules.  Have you
>> changed your mind about that?  The code above is a far
>> cry from C, let alone C90.
>
> Exactly.
> I think that all methods that are both good and fast rely on 64-bit
> unsigned integer arithmetic.  And it seems to me that C90 does not
> provide it in portable manner.
> So, under portable C90 constraints one has to choose between good and
> fast.

I am confident that C90 can support defining a suitable hash
function portable to any system that has a C90 implementation
appropriate to that system's environment.

That said, unless some sort of objective measure is given for the
terms good and fast, the last quoted sentence is pretty much
meaningless.

Back to comp.lang.c | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Re: Good hash for pointers Michael S <already5chosen@yahoo.com> - 2024-06-05 00:59 +0300
  Re: Good hash for pointers Bonita Montero <Bonita.Montero@gmail.com> - 2024-06-05 11:10 +0200
    Re: Good hash for pointers Michael S <already5chosen@yahoo.com> - 2024-06-05 12:34 +0300
      Re: Good hash for pointers Bonita Montero <Bonita.Montero@gmail.com> - 2024-06-05 12:05 +0200
        Re: Good hash for pointers Michael S <already5chosen@yahoo.com> - 2024-06-05 13:11 +0300
  Re: Good hash for pointers Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-06-05 08:58 -0700
    AES problem (was: Good hash for pointers) Michael S <already5chosen@yahoo.com> - 2024-06-05 19:51 +0300
      Re: AES problem (was: Good hash for pointers) Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-06-05 21:24 -0700
    Re: Good hash for pointers Michael S <already5chosen@yahoo.com> - 2024-06-05 19:59 +0300
      Re: Good hash for pointers Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-06-05 21:40 -0700
        Re: Good hash for pointers Michael S <already5chosen@yahoo.com> - 2024-06-06 11:00 +0300
          Re: Good hash for pointers Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-06-17 00:56 -0700
            Re: Good hash for pointers Michael S <already5chosen@yahoo.com> - 2024-06-17 12:39 +0300
              Re: Good hash for pointers Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-06-18 10:47 -0700
                Re: Good hash for pointers Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-06-18 15:17 -0700
                Re: Good hash for pointers Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-06-18 16:17 -0700
                Re: Good hash for pointers James Kuyper <jameskuyper@alumni.caltech.edu> - 2024-06-18 19:23 -0400
                Re: Good hash for pointers Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2024-06-18 17:17 -0700
                Re: Good hash for pointers Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-06-23 11:23 -0700
    Re: Good hash for pointers Michael S <already5chosen@yahoo.com> - 2024-06-06 13:35 +0300
      Re: Good hash for pointers Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-06-16 04:38 -0700
        Re: Good hash for pointers "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2024-06-16 12:34 -0700
  Re: Good hash for pointers Bonita Montero <Bonita.Montero@gmail.com> - 2024-06-07 20:53 +0200
    Re: Good hash for pointers Bonita Montero <Bonita.Montero@gmail.com> - 2024-06-09 13:35 +0200
      Re: Good hash for pointers Richard Harnden <richard.nospam@gmail.invalid> - 2024-06-09 12:40 +0100
        Re: Good hash for pointers Bonita Montero <Bonita.Montero@gmail.com> - 2024-06-09 15:09 +0200
      Re: Good hash for pointers Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2024-06-10 01:34 +0100
        Re: Good hash for pointers Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-06-09 18:31 -0700
          Re: Good hash for pointers Michael S <already5chosen@yahoo.com> - 2024-06-10 15:14 +0300
            Re: Good hash for pointers Bonita Montero <Bonita.Montero@gmail.com> - 2024-06-10 14:40 +0200
            Re: Good hash for pointers Tim Rentsch <tr.17687@z991.linuxsc.com> - 2024-06-15 20:32 -0700
        Re: Good hash for pointers Bonita Montero <Bonita.Montero@gmail.com> - 2024-06-10 09:35 +0200

csiph-web