From: Karsten Blees <karsten.blees@gmail.com>
To: Git List <git@vger.kernel.org>
Subject: [PATCH/RFC 0/5] New hash table implementation
Date: Wed, 11 Sep 2013 01:27:00 +0200 [thread overview]
Message-ID: <522FAAC4.2080601@gmail.com> (raw)
Also here: https://github.com/kblees/git/tree/kb/hashmap
Hi,
this is a spin-off of my (very slowly progressing) msysgit fscache project. I needed to remove things from the hash table, which cannot be implemented efficiently in hash.[ch].
So I wrote hasmap.[ch], with these features:
- O(1) remove
- builtin entry chaining
- ready-to-use FNV-1 hash functions
- unit test
- additions are ~twice as fast
- uses less memory
Patches 2 and 5 convert existing uses of hash.[ch] to hashmap.[ch].
Patches 3 and 4 are useful optimizations of their own.
I haven't found the time to tackle name-hash.c yet, this is where remove() could come into play (to replace the CE_UNHASHED flag).
Karsten
Karsten Blees (5):
add a hashtable implementation that supports O(1) removal
buitin/describe.c: use new hash map implementation
diffcore-rename.c: move code around to prepare for the next patch
diffcore-rename.c: simplify finding exact renames
diffcore-rename.c: use new hash map implementation
Makefile | 3 +
builtin/describe.c | 53 +++++------
diffcore-rename.c | 185 +++++++++++++-------------------------
hashmap.c | 210 +++++++++++++++++++++++++++++++++++++++++++
hashmap.h | 200 +++++++++++++++++++++++++++++++++++++++++
t/t0011-hashmap.sh | 236 ++++++++++++++++++++++++++++++++++++++++++++++++
test-hashmap.c | 258 +++++++++++++++++++++++++++++++++++++++++++++++++++++
7 files changed, 995 insertions(+), 150 deletions(-)
create mode 100644 hashmap.c
create mode 100644 hashmap.h
create mode 100755 t/t0011-hashmap.sh
create mode 100644 test-hashmap.c
--
1.8.4.8243.gbcbdefd
next reply other threads:[~2013-09-10 23:27 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-10 23:27 Karsten Blees [this message]
2013-09-10 23:28 ` [PATCH/RFC 1/5] add a hashtable implementation that supports O(1) removal Karsten Blees
2013-09-11 23:56 ` Junio C Hamano
2013-09-23 9:16 ` Karsten Blees
2013-09-12 4:10 ` Junio C Hamano
2013-09-23 9:21 ` Karsten Blees
2013-09-10 23:28 ` [PATCH/RFC 2/5] buitin/describe.c: use new hash map implementation Karsten Blees
2013-09-10 23:29 ` [PATCH/RFC 3/5] diffcore-rename.c: move code around to prepare for the next patch Karsten Blees
2013-09-10 23:30 ` [PATCH/RFC 4/5] diffcore-rename.c: simplify finding exact renames Karsten Blees
2013-09-10 23:30 ` [PATCH/RFC 5/5] diffcore-rename.c: use new hash map implementation Karsten Blees
2013-09-24 9:50 ` [PATCH v2 0/5] New hash table implementation Karsten Blees
2013-09-24 9:51 ` [PATCH v2 1/5] add a hashtable implementation that supports O(1) removal Karsten Blees
2013-09-24 9:52 ` [PATCH v2 2/5] buitin/describe.c: use new hash map implementation Karsten Blees
2013-09-24 9:52 ` [PATCH v2 3/5] diffcore-rename.c: move code around to prepare for the next patch Karsten Blees
2013-09-24 9:53 ` [PATCH v2 4/5] diffcore-rename.c: simplify finding exact renames Karsten Blees
2013-09-24 9:54 ` [PATCH v2 5/5] diffcore-rename.c: use new hash map implementation Karsten Blees
2013-09-24 10:18 ` [PATCH v2 0/5] New hash table implementation Fredrik Gustafsson
2013-09-24 11:16 ` Tay Ray Chuan
2013-09-26 14:38 ` Karsten Blees
2013-09-26 10:16 ` Fredrik Gustafsson
2013-09-26 10:26 ` Duy Nguyen
2013-09-26 11:08 ` Fredrik Gustafsson
2013-09-26 11:14 ` Duy Nguyen
2013-09-26 13:55 ` Karsten Blees
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=522FAAC4.2080601@gmail.com \
--to=karsten.blees@gmail.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).