I did some basic profiling of CVS HEAD after having read Bruce's post the
other day: When did we get so fast. It seemed to me that the number of
inserts per second wasn't actually all that high so I had a look at some
numbers:

  %   cumulative   self              self     total
 time   seconds   seconds    calls   s/call   s/call  name
  7.32      3.48     3.48   100004     0.00     0.00  yyparse
  4.42      5.58     2.10  1200107     0.00     0.00  SearchCatCache
  4.10      7.53     1.95   900020     0.00     0.00  base_yylex
  3.85      9.35     1.83   100150     0.00     0.00  XLogInsert
  3.51     11.02     1.67   600540     0.00     0.00  pgstat_initstats
  2.24     12.09     1.07  2208418     0.00     0.00  hash_search
  1.86     12.97     0.88  2607669     0.00     0.00  hash_any

I am still researching ways of increasing performance of yacc parsers --
there is a very small amount of information on the Web concerning this --
but pgstat_initstats() caught my eye. This gets called about 6 times per
insert (I did 100000 inserts) and the major cost appears to relate to the
linear pgStatTabstatMessages. The comparative performance of
hash_search() suggests that pgStatTabstatMessages may benefit from use of
a hash. However, it seems unreasonable that we're doing work at all in
pgstat_initstats() if the user is not interested in query/block/tuple
stats.

Comments? Have I missed something?

Thanks,

Gavin


---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to