On 2013-09-24 19:56:32 +0200, Andres Freund wrote: > On 2013-09-24 13:51:04 -0300, Alvaro Herrera wrote: > > David Rowley escribió: > > > > > I do see a 15-18% slow down with the patched version, so perhaps I'll need > > > to look to see if I can speed it up a bit, although I do feel this > > > benchmark is not quite a normal workload. > > > > Ouch. That's certainly way too much. Is the compiler inlining > > process_log_prefix_padding()? If not, does it do it if you add "inline" > > to it? That might speed up things a bit. If that's not enough, maybe > > you need some way to return to the original coding for the case where no > > padding is set in front of each option. > > From a very short look without actually running it I'd guess the issue > is all the $* things you're now passing to do appendStringInfo (which > passes them off to vsnprintf). > How does it look without that?
That's maybe misunderstandable, what I mean is to have an if (padding > 0) around the the changed appendStringInfo invocations and use the old ones otherwise.
Yeah I had the same idea to try that next. I suspect that's where the slow down is rather than the processing of the padding. I'm thinking these small tweaks are going to make the code a bit ugly, but I agree about the 15-18% slowdown is a no go. The only other thing apart from checking if padding > 0 is to check if the char after the % is > '9', in that case it can't be formatting as we're only allowing '-' and '0' to '9'. Although I think that's a bit hackish, but perhaps it is acceptable if it helps narrow the performance gap.