• H
    Use ereport, rather than elog, for performance. · 01dff3ba
    Heikki Linnakangas 提交于
    ereport() has one subtle but important difference to elog: it doesn't
    evaluate its arguments, if the log level says that the message doesn't
    need to be printed. This makes a small but measurable difference in
    performance, if the arguments contain more complicated expressions, like
    function calls.
    
    While performance testing a workload with very short queries, I saw some
    CPU time being used in DtxContextToString. Those calls were coming from the
    arguments to elog() statements, and the result was always thrown away,
    because the log level was not high enough to actually log anything. Turn
    those elog()s into ereport()s, for speed.
    
    The problematic case here was a few elogs containing DtxContextToString
    calls, in hot codepaths, but I changed a few surrounding ones too, for
    consistency.
    
    Simplify the mock test, to not bother mocking elog(), while we're at it.
    The real elog/ereport work just fine in the mock environment.
    01dff3ba
Makefile 531 字节