Messages in this thread | | | Date | Mon, 26 Mar 2012 10:01:30 +0900 | From | KAMEZAWA Hiroyuki <> | Subject | Re: seq_put_decimal_* optimization |
| |
(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
| |