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
<? $a = "/dir/with/hugefiles"; $d = opendir($a); for ($i = 0; $i < 20; $i++) { rewinddir($d); while(($f = readdir($d)) !== false) { readfile($a."/".$f); } } closedir($d);
-- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]