{"push_id":1308500862,"size":4,"distinct_size":2,"ref":"refs/heads/feature/gh24-he-array","head":"3ec8447b84b5cba1065f8aa08455e11db0afa2b5","before":"c26639e2755468ed6086340703078446cee71712","commits":[{"sha":"ef9920f12795e66a90808b1624659d94ae6cd500","author":{"name":"Reini Urban","email":"124d4de0b2391c49441429d4e282b8f880187ae3@cpanel.net"},"message":"B-C: skip hanging APPVEYOR t/modules.t","distinct":false,"url":"https://api.github.com/repos/perl11/cperl/commits/ef9920f12795e66a90808b1624659d94ae6cd500"},{"sha":"01be272f718de01749a5e164ddb6f4b626de56f3","author":{"name":"Reini Urban","email":"124d4de0b2391c49441429d4e282b8f880187ae3@cpanel.net"},"message":".git-rr-cache: more hash macros","distinct":false,"url":"https://api.github.com/repos/perl11/cperl/commits/01be272f718de01749a5e164ddb6f4b626de56f3"},{"sha":"c7bdd3cf1a536058113bf006a0c21f85d9345600","author":{"name":"Reini Urban","email":"124d4de0b2391c49441429d4e282b8f880187ae3@cpanel.net"},"message":"HeArray: remove hek_hash and refcounted_he_hash\n\nCalculate hashes on demand, but not store it in a HEK\nto make HEK shorter to fill more entries into a cache line.\nHEK_HASH(hek) is now invalid and gone.\nUse the new HeHASH_calc(he), HEK_HASH_calc(hek), SvSHARED_HASH_calc(sv)\ninstead.\n\nAnd using 4 tests in the hot hash loop also makes not much sense,\nwhen checking the length and the string is enough to weed out\ncollisions.\nThis strategy, recomputing the hash wehen needed, is so far 1-7% slower,\nbut we hope to get to speed with the HeARRAY patch. See below.\n\nThe endgoal is to get rid of linked lists and store the collisions\ninlined in consecutive memory, in a HekARRAY. (len,cmp-flags,char*,other-flags,val)\nMeasurements in \"Cache-Conscious Collision Resolution in String Hash Tables\"\nby Nikolas Askitis and Justin Zobel, Melbourne 2005 show that this is the\nfastest strategy for Open Hashing (chained) tables.\nSee GH #24 and GH #102\n\nThe next idea is to use MSB varint encoding of the str length in a HEK,\nbecause our strings are usually short, len < 63, fits into one byte.\nWe can then merge it with the cmp-flags, the flags only needed for comparison.\nSee https://techoverflow.net/blog/2013/01/25/efficiently-encoding-variable-length-integers-in-cc/\nor just <63 one byte, >63 MSB: I32 len.\nNote that the 1st MSB bit is already taken for UTF8.","distinct":true,"url":"https://api.github.com/repos/perl11/cperl/commits/c7bdd3cf1a536058113bf006a0c21f85d9345600"},{"sha":"3ec8447b84b5cba1065f8aa08455e11db0afa2b5","author":{"name":"Reini Urban","email":"124d4de0b2391c49441429d4e282b8f880187ae3@cpanel.net"},"message":"HekARRAY: WIP restructure from HE** to HEK*","distinct":true,"url":"https://api.github.com/repos/perl11/cperl/commits/3ec8447b84b5cba1065f8aa08455e11db0afa2b5"}]}
{"actor":{"display_login":"rurban"}}