CGI output performance
| From: | Sascha Schumann | Date: | Sat, 19 May 2001 08:22:10 +0000 |
| Subject: | CGI output performance | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-55873@lists.php.net to get a copy of this message | ||
Hi,
while looking at the strace output of readfile() in a CGI
context, I noticed that the CGI code (a) uses stdio and (b)
that it only outputs chunks with a maximum size of 16KB.
The effect is clearly visible (reproducible, both tests were
run with a warmed-up cache):
$ time ./php-mmap-fwrite ./script >/dev/null
2.75user 0.47system 0:03.22elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (244391major+65minor)pagefaults 0swaps
$ time ./php-mmap-write ./script >/dev/null
0.03user 0.01system 0:00.04elapsed 100%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (284major+64minor)pagefaults 0swaps
E.g. using write() is about 80 times faster on Linux than the
limited fwrite() version.
fwrite() was probably chosen because it is a standardized
function and is expected to work everywhere. So, what we
would need to do is to add a check whether write() works on
the system before using it.
Are there any objections to such a change?
- Sascha Experience IRCG
http://schumann.cx/ http://schumann.cx/ircg