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)