Re: seq_put_decimal_* optimization

From: KAMEZAWA Hiroyuki
Date: Sun Mar 25 2012 - 21:03:10 EST


(2012/03/24 21:52), Ulrich Drepper wrote:

> If we want to squeeze out the last drop of slack from the /proc text
> generation, shouldn't we then avoid code like
>
> + seq_put_decimal_ull(m, ' ', 0);
>
> which is worse than what was there before? I realize that the code
> actually becomes more readable like this. So how about automatically
> optimizing the code by adding something like the following to
> seq_file.h:
>
> #define seq_put_decimal_ull(m, delimiter, num) \
> (__builtin_constant_p(num) && \
> __builtin_constant_p(delimiter) && (delimiter) == ' ' \
> ? seq_write(m, " " #num, sizeof(" " #num) - 1) \
> : seq_put_decimal_ull(m, delimiter, num))
>
> Completely untested and it is a minimal change. It could be written
> using an inline function and probably made more general that way
> (e.g., handle more delimiters). But this code should handle the case
> that exist today and lead to a (very small) improvement without any
> real costs to maintenance.
>

Could you wait a while ?

I'm now considering to add a binary interface /proc/stat.bin and
I would like to use seq_put_decimal_ull() as..
==
int seq_put_decimal_ull(struct seq_file *m, int delimiter, unsigned long long num)
{
if (m->binstream_format)
return seq_binstream_attend(num, sizeof(num));
.....
}
==
Then, we can maintain /proc/stat and /proc/stat.bin in one function
fs/proc/stat.c::show_stat().
Maybe good for applications like top and sa..

Thanks,
-Kame
















--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/