> Yeah, I did see the inline statements, but I was worried mostly about 
 > the sheer number of calls. For 5000-odd pages, it seems silly to be 
 > calling something 2 billion times!

 True. Marcel did the compression and I'm not familiar with the code. 
NField was called in loops where it could have been stored in a temporary
variable. Still, the loops exists and that means that the compression does
billion operations on a 5000 page pool.

 > Good work though, that should help narrow the performance gap.

 Again, I'm not sure that we will gain significant performances because
of that. I've compiled and profiled with -O2 -p (no -g) and I see the 
following:

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
 time   seconds   seconds    calls  us/call  us/call  name    
 13.33      0.02     0.02                             __bam_c_put
 13.33      0.04     0.02                             __bam_search
 13.33      0.06     0.02                             __db_fcchk
 13.33      0.08     0.02                             memp_fput
  6.67      0.09     0.01    36082     0.28     0.28  WordKey::SetWord(String const &)
  6.67      0.10     0.01                             __bam_c_search
  6.67      0.11     0.01                             __bam_cmp
  6.67      0.12     0.01                             __db_cputchk
  6.67      0.13     0.01                             __db_ret
  6.67      0.14     0.01                             __db_shalloc
  6.67      0.15     0.01                             Db::put(DbTxn *, Dbt *, Dbt *, 
unsigned int)
  0.00      0.15     0.00   636194     0.00     0.00  ExternalTransport_Response 
virtual table
  0.00      0.15     0.00   144332     0.00     0.00  WordKey::IsDefined(int) const
  0.00      0.15     0.00   112814     0.00     0.00  WordKey::SetDefined(int)
  0.00      0.15     0.00   102197     0.00     0.00  WordKey::Get(int) const
  0.00      0.15     0.00   102197     0.00     0.00  WordKey::Set(int, unsigned int)
  0.00      0.15     0.00    83026     0.00     0.00  WordKey::Info(void)
  0.00      0.15     0.00    41513     0.00     0.00  WordKey::Clear(void)
  0.00      0.15     0.00    36082     0.00     0.00  WordKey::GetWord(void) const


  Note that *all* methods listed from WordKey are inline. For instance 

  0.00      0.15     0.00   144332     0.00     0.00  WordKey::IsDefined(int) const

  is merely a 'return setbits & constant'. I doubt very much that such
a thing eats 0.15 sec when repeated 144332 times on a PIII500. We see
profiling noise here.  I should check to see if there is a way for
gprof (-p) to count inlined functions as part of the calling function,
without maintaining a specific counter for them.

  Cheers,

-- 
                Loic Dachary

                24 av Secretan
                75019 Paris
                Tel: 33 1 42 45 09 16
                e-mail: [EMAIL PROTECTED]
                URL: http://www.senga.org/


------------------------------------
To unsubscribe from the htdig3-dev mailing list, send a message to
[EMAIL PROTECTED] 
You will receive a message to confirm this. 

Reply via email to