[syslog-ng] [PATCH] basicfuncs: Implement a few numeric template functions.
algernon at balabit.hu
Tue May 3 23:11:37 CEST 2011
Balazs Scheidler <bazsi at balabit.hu> writes:
> Hi Gergely,
> Thanks for the patch, I see an immediate use-case for this.
> I applied the patch to the 3.4 tree, and at the same time, I've changed
> it slightly.
> On Tue, 2011-05-03 at 22:19 +0200, Gergely Nagy wrote:
>> Implement addition, substraction, multiplication, division and modulus
>> template functions: $(+ N M), $(- N M), $(* N M), $(/ N M) and $(% N
>> M), respectively.
>> All of them take two numeric arguments, and log an error,
> instead of logging an error, always, insert a "NaN" into the output
> stream, which stands for Not-a-Number, commonly used to represent
> non-numbers in underflows. I know it's not that intuitive, but in
> production environments, generating loads of error messages such as
> these in the fast path (even more, since you can several invocation of
> these functions per message), would do no good.
Sounds reasonable, and this makes it easier to detect errors too. Thanks
for the explanation & idea, I'll use a similar approach in future
template functions =)
> Also, while I was at it, I've changed all g_string_append_printf() calls
> to format_int32_padded(), which is much faster.
> g_string_append_printf() is double slow, because:
> 1) it uses printf, but to measure the length of the string, it runs
> printf without storing its results, and then
> 2) allocates a buffer to format this result, and then
> 3) moves the temp buffer to the end of the gstring
> 4) frees the buffer.
> So it is not even double, but quadraple slow. :)
> This is the commit message, please let me know if you disagree with my
I completely agree with your changes.
More information about the syslog-ng