Re: Performance problem, long run of identical hashes
From: David Kastrup <hidden>
Date: 2016-06-15 22:43:57
Nicolas Pitre [off-list ref] writes:
On Mon, 10 Dec 2007, Jon Smirl wrote:quoted
Running oprofile during my gcc repack shows this loop as the hottest place in the code by far.Well, that is kind of expected.quoted
I added some debug printfs which show that I have a 100,000+ run of identical hash entries. Processing the 100,000 entries also causes RAM consumption to explode.That is impossible. If you look at the code where those hash entries are created in create_delta_index(), you'll notice a hard limit of HASH_LIMIT (currently 64) is imposed on the number of identical hash entries.
Well, impossible is a strong word to use with respect to code: bugs are possible. However, we have the assertion assert(packed_entry - (struct index_entry *)mem == entries); in create_delta_index and that makes a pretty strong guarantee that the culling of hash entries should be effective. So at least the overall _number_ of entries should be consistent. If there is a bug, it might be that they get garbled or something. It is also not clear how this could cause an explosion of RAM consumption in the loop. -- David Kastrup, Kriemhildstr. 15, 44793 Bochum