iproute2/misc
Stefano Brivio 691bd854bf ss: Buffer raw fields first, then render them as a table
This allows us to measure the maximum field length for each
column before printing fields and will permit us to apply
optimal field spacing and distribution. Structure of the output
buffer with chunked allocation is described in comments.

Output is still unchanged, original spacing is used.

Running over one million sockets with -tul options by simply
modifying main() to loop 50,000 times over the *_show()
functions, buffering the whole output and rendering it at the
end, with 10 UDP sockets, 10 TCP sockets, while throwing
output away, doesn't show significant changes in execution time
on my laptop with an Intel i7-6600U CPU:

- before this patch:
$ time ./ss -tul > /dev/null
real	0m29.899s
user	0m2.017s
sys	0m27.801s

- after this patch:
$ time ./ss -tul > /dev/null
real	0m29.827s
user	0m1.942s
sys	0m27.812s

Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Reviewed-by: Sabrina Dubroca <sd@queasysnail.net>
2017-12-12 12:11:37 -08:00
..
.gitignore Add ignore files to make using git easier 2006-08-08 12:04:38 -07:00
Makefile SPDX license identifiers 2017-11-24 12:21:35 -08:00
arpd.c lib: make resolve_hosts variable common 2017-11-12 16:15:23 -08:00
ifstat.c ifstat, nstat: Check fdopen() return value 2017-08-24 14:49:43 -07:00
lnstat.c Replace malloc && memset by calloc 2016-07-20 12:05:24 -07:00
lnstat.h SPDX license identifiers 2017-11-24 12:21:35 -08:00
lnstat_util.c lnstat_util: Make sure buffer is NUL-terminated 2017-09-01 12:10:54 -07:00
nstat.c ifstat, nstat: Check fdopen() return value 2017-08-24 14:49:43 -07:00
rtacct.c misc: fix style issues 2016-03-21 11:56:36 -07:00
ss.c ss: Buffer raw fields first, then render them as a table 2017-12-12 12:11:37 -08:00
ssfilter.h SPDX license identifiers 2017-11-24 12:21:35 -08:00
ssfilter.y ss: Support displaying and filtering on socket marks. 2016-09-22 16:34:40 -07:00