Re: fprintf && write

From
Serge Ryabchun ()
To
Valentin Nechayev ()
Date
2003-06-04T13:29:58Z
Area
RU.UNIX.PROG
From: Serge Ryabchun <sr@energy.uch.net>

Valentin Nechayev <netch@segfault.kiev.ua> wrote:
> AM> PS: Правда там порядка 324 тысяч вызовов :) Но это не повод еще... так
> AM> тормозить.
> 
> Померять долю процессора в kernel и user land можешь?

char str[ 1024]; 
memset( str, ' ', 1024); str[ 1022] = '\n'; str[ 1023] = 0;

for( i = 0; i < 324000 * 100; i++) write( 1, str, 1024);

[sr@serge write]$ time ./write 1> /dev/null
6.96user 7.74system 0:15.31elapsed 96%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (71major+10minor)pagefaults 0swaps

for( i = 0; i < 324000 * 100; i++) puts( str);

[sr@serge write]$ time ./puts 1> /dev/null
85.37user 2.84system 1:30.59elapsed 97%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (81major+12minor)pagefaults 0swaps

В простейшем случае write куда лучше. BTW, сам syscall очень дешевый,
примитивный getpid() перед write практически не изменил результат.

-- 
Serge Ryabchun sr@energy.uch.net
--- ifmail v.2.15dev5
 * Origin: Demos online service (2:5020/400)