realpath() caching

php.internals

Andi Gutmans

22 years ago
Hi guys, Before 5.0.0 we promised we'll get something together for solving the performance problems caused by Zend always realpath()'ing include files (in expand_filepath()). Attached is a proposed implementation of such a cache. We tried to make it as simple as possible and tests shows that it solves the performance problems. A few facts about it: a) Expiration and Cache size are still hardcoded and not INI options in tsrm_virtual_cwd.h. Didn't want to go through the trouble of doing it because we agree on the implementation. b) tsrm_hash.* is a full blown hash and not a stripped down hash which is all that's needed for this. It'll be stripped down. c) In my opinion and tests, having a memory limit on the cache works great because it makes sure the cache doesn't go crazy and even in like 16K of memory you can usually cache all of the realpath()'s. d) Current expiration for an entry is 2 minutes which is also plenty. e) I wouldn't make it much more complicated or "smarter" than this because it'll just add lots of code and will probably not perform much better. Comments welcome. Let's get this baby into PHP 5.1! Andi

Andrei Zmievski

22 years ago
Attachment didn't come through. On Thu, 22 Jul 2004, Andi Gutmans wrote:
> Hi guys, > > Before 5.0.0 we promised we'll get something together for solving the > performance problems caused by Zend always realpath()'ing include files (in > expand_filepath()). > Attached is a proposed implementation of such a cache. We tried to make it > as simple as possible and tests shows that it solves the performance > problems. > A few facts about it: > a) Expiration and Cache size are still hardcoded and not INI options in > tsrm_virtual_cwd.h. Didn't want to go through the trouble of doing it > because we agree on the implementation. > b) tsrm_hash.* is a full blown hash and not a stripped down hash which is > all that's needed for this. It'll be stripped down. > c) In my opinion and tests, having a memory limit on the cache works great > because it makes sure the cache doesn't go crazy and even in like 16K of > memory you can usually cache all of the realpath()'s. > d) Current expiration for an entry is 2 minutes which is also plenty. > e) I wouldn't make it much more complicated or "smarter" than this because > it'll just add lots of code and will probably not perform much better. > > Comments welcome. Let's get this baby into PHP 5.1! > > Andi
> -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php
- Andrei