Re: hashlittle(), hashbig(), hashword() and endianness
От | Alex Vinokur |
---|---|
Тема | Re: hashlittle(), hashbig(), hashword() and endianness |
Дата | |
Msg-id | 4a96bb23-fb44-4285-9b46-093efc483be1@w28g2000hsf.googlegroups.com обсуждение исходный текст |
Ответ на | updated hash functions for postgresql v1 (Kenneth Marshall <ktm@rice.edu>) |
Ответы |
Re: hashlittle(), hashbig(), hashword() and endianness
|
Список | pgsql-patches |
On Nov 15, 10:40 am, Alex Vinokur <ale...@users.sourceforge.net> wrote: [snip] > I have some question concerning Bob Jenkins' functions > hashword(uint32_t*, size_t), hashlittle(uint8_t*, size_t) and > hashbig(uint8_t*, size_t) in lookup3.c. > > Let k1 by a key: uint8_t* k1; strlen(k1)%sizeof(uint32_t) == 0. > > 1. hashlittle(k1) produces the same value on Little-Endian and Big- > Endian machines. > Let hashlittle(k1) be == L1. > > 2. hashbig(k1) produces the same value on Little-Endian and Big-Endian > machines. > Let hashbig(k1) be == B1. > > L1 != B1 > > 3. hashword((uint32_t*)k1) produces > * L1 on LittleEndian machine and > * B1 on BigEndian machine. > =================================== > --------------------- > The question is: is it possible to change hashword() to get > * L1 on Little-Endian machine and > * B1 on Big-Endian machine > ? Sorry, it should be as follows: Is it possible to create two new hash functions on basis of hashword(): i) hashword_little () that produces L1 on Little-Endian and Big- Endian machines; ii) hashword_big () that produces B1 on Little-Endian and Big- Endian machines ? ==================================== Thanks. Alex Vinokur email: alex DOT vinokur AT gmail DOT com http://mathforum.org/library/view/10978.html http://sourceforge.net/users/alexvn
В списке pgsql-patches по дате отправления: