|
From: Ganssauge, G. <Got...@ha...> - 2007-01-10 09:32:21
|
Hi everybody, I'm using callgrind to find performance bottlenecks in our indexing software - with very good success indeed! This morning I found some behaviour I cannot explain. Yesterday morning I profiled some component which yielded an overall instruction count of ca. 195,000,000,000. Then I modified an internally used algorithm based on this measurement and the resulting program ran about 20% faster. But the profile I generated this night (using the same input data) doesn't match this 20% improvement but showed an increase in instruction count to ca. 955,000,000,000 instructions - about 5 times the original count. Are instruction counts somehow bounded to 1,000,000,000,000? Then the first count could have wrapped around and be 1,195,000,000,000 instead. This would about match the 20% improvement measured by running the program. But if I view the profile with kcachegrind there are call counts which are absolutely amazing: The key routine I'm trying to improve is called 3011 times - in both profiles. But in the old profile two library routines called by my key routine have call counts of ca. 11,000,000 times whereas in the new profile those same two library functions are claimed to be called more than 4,300,000,000 each which cannot be explained by some wrap around at 1,000,000,000,000 ... Does anyone have ideas what I'm doing wrong? Cheers, Gottfried=20 P.S.: I already tried to reduce the problem size to some more managable size (It's about 4GB now) - with no luck so far. |