Thread (1 message) 1 message, 1 author, 2016-06-15

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help