Reentrant C scanners for PHP
| From: | Sascha Schumann | Date: | Thu, 05 Jul 2001 23:08:03 +0000 |
| Subject: | Reentrant C scanners for PHP | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-59035@lists.php.net to get a copy of this message | ||
This is the first public release of fully reentrant C
scanners for the PHP language and the INI system. They
can be used to replace the Flex-based implementations
commonly found in the Zend Engine.
Features:
- Flexible I/O model; lays groundwork for fully supporting
modern web-servers such as Apache 2.0;
- uses portable C only; significantly improves portability by
removing dependence on GNU extensions of C++;
- fully thread-safe without loss of speed.
The software is currently available in the form of three
source files and a patch to the Zend Engine.
http://schumann.cx/ngscan-0.1.tar.gz
To install, cd into the ngscan directory and run
"make ZEND=../php4/Zend install", followed by a buildconf.
Because software already exists to eliminate the scan/parse
process, speed was not a main concern. The new language
scanner is faster than the old one in all tested scenarios
though.
time saved lines what
10% 500K <? echo test ?>
15% 500K <? echo "test" ?>
40% 1.5M pure HTML
- 500K ZTS, <? echo test ?> (1)
87% 500K ZTS, <? echo "test" ?>
99% 1.5M ZTS, pure HTML (2)
(1) crashed in vprintf, apparently some glibc/pthread issue
(2) +4 minutes vs 800 milli-seconds
(user times taken from a command-line CGI, CFLAGS=-O,
--enable-inline-optimization, gcc 2.95.3, Linux 2.4.6, glibc
2.2.3)
- Sascha Experience IRCG
http://schumann.cx/ http://schumann.cx/ircg