Am 14.05.2018 um 03:37 schrieb Junio C Hamano: > René Scharfe <l.s.r@xxxxxx> writes: > >> Storing integer values in pointers is a trick that seems to have worked >> so far for fast-export. A portable way to avoid that trick without >> requiring more memory would be to use a union. >> >> Or we could roll our own custom hash map, as I mused in an earlier post. >> That would duplicate quite a bit of code; are there reusable pieces >> hidden within that could be extracted into common functions? > > Hmm, this together with your follow-up does not look too bad, but it > does introduce quite a lot of code that could be refactored, so I am > not sure if I really like it or not. Putting keys and values into separate arrays probably causes stores and lookups to hit (at least) two cache lines instead of just one. Not sure how much of an impact that has on the overall performance (probably not much), but we'd need at least a perf test for that. And we have enough hash map implementations already. Casting should be good enough for now, to avoid the compiler warning. René