I've done some more profiling. Same test setup, current squid3 source.

perfmon output:

--------------------------------------------------------------------------------
Samples   Self %  Total %  Function

   18915   26.09%   26.09%  MemPool::clean(long)
    9266   12.78%   38.86%  MemPool::getStats(MemPoolStats*)
    3809    5.25%   44.12%  MemPool::push(void*)
    1407    1.94%   46.06%  MemPool::get()
    1295    1.79%   47.84%  mem_hdr::copyAvailable(mem_node*, unsigned int, 
unsigned int, char*) const
     956    1.32%   49.16%  headersEnd
     884    1.22%   50.38%  String::limitInit(char const*, int)
     836    1.15%   51.53%  mem_hdr::writeAvailable(mem_node*, unsigned int, 
unsigned int, char const*)
     652    0.90%   52.43%  MemBuf::append(char const*, int)
     625    0.86%   53.29%  httpHeaderIdByName

gprof output:

Flat profile:

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total
 time   seconds   seconds    calls  Ks/call  Ks/call  name
 41.72    520.92   520.92    96886     0.00     0.00  MemPool::clean(long)
 18.68    754.16   233.24    95668     0.00     0.00  
MemPool::getStats(MemPoolStats*)
  3.78    801.41    47.25 80591325     0.00     0.00  MemPool::push(void*)
  1.77    823.52    22.11 80591448     0.00     0.00  MemPool::get()
  1.36    840.45    16.93  1869713     0.00     0.00  
mem_hdr::copyAvailable(mem_node*, unsigned int, unsigned int, char*) const
  1.00    852.93    12.48  1945388     0.00     0.00  headersEnd
  0.91    864.32    11.38  9211732     0.00     0.00  
mem_hdr::writeAvailable(mem_node*, unsigned int, unsigned int, char const*)
  0.85    874.90    10.59 46796172     0.00     0.00  String::limitInit(char 
const*, int)
  0.65    883.03     8.12 27262950     0.00     0.00  MemBuf::append(char 
const*, int)
  0.61    890.64     7.62  8808921     0.00     0.00  httpHeaderIdByName

I wonder why the chunked allocator is doing -that-..




Adrian


Reply via email to