But as this post http://stackoverflow.com/a/194959
points out is not the case anymore in PHP5 (remember also that you have the overhead of function_exists in the guarded version).
That comparison has several issues:
1. require vs require_once files are different. In the require_once version the "define('CommonHdr', 1);" part is not in the included file and therefore is not credited against require's runtime.
2. The paths being required do not have any symlinks in them, which is where the difference between require and require_once should manifest. It seems that require tries to resolve symlinks, which is interesting as there should be no need for it, but without symlinks in the path it's not a clearly demonstrated fact.
3. There is no comparison between syscalls used in require_once path vs function/class_exists and require in the case when the file is already loaded (one would expect the check+require path to not issue any syscalls in that case).
I wouldn't base much on it.
So my guess is that you still want to support PHP4 by guarding all of the includes, but is that really still necessary? I mean, how many PHP4 installations exists "out there on the wild wild Internet"? And how many are used for PHPBB?
phpbb 3.0.x supports php 4. We are not going to drop that support therefore the number of php 4 installations still existing is irrelevant.