Path: ...!news.mixmin.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Malcolm McLean Newsgroups: comp.lang.c Subject: Re: Good hash for pointers Date: Mon, 10 Jun 2024 01:34:21 +0100 Organization: A noiseless patient Spider Lines: 31 Message-ID: References: <86fru6gsqr.fsf@linuxsc.com> <8634q5hjsp.fsf@linuxsc.com> <86le3wfsmd.fsf@linuxsc.com> <86ed9ofq14.fsf@linuxsc.com> <20240605005916.00001b33@yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Mon, 10 Jun 2024 02:34:21 +0200 (CEST) Injection-Info: dont-email.me; posting-host="6dd644d904799cc70f95f2de10652995"; logging-data="4105658"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX196Oi3Ltlb5cftPV+ilxRrxN53dWq2qMeQ=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:cqHF166wNSfFYIqzJm2GMuNGTZU= Content-Language: en-GB In-Reply-To: Bytes: 2599 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; >     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. Thank you. I have your permission to drop that in? -- Check out my hobby project. http://malcolmmclean.github.io/babyxrc