On Fri, 2008-08-15 at 22:56 -0500, Shawn McKenzie wrote: > Robert Cummings wrote: > > On Fri, 2008-08-15 at 18:34 -0500, Shawn McKenzie wrote: > >> Herman Gomez wrote: > >>> Hi, > >>> > >>> Here is something I used to do in C/C++ to include/exclude automaticaly > >>> all debugging code at compiling time: > >>> > >>> #define debug TRUE > >>> #ifdef(debug) > >>> //debugging code > >>> #endif > >>> > >>> That way I can include/exclude easily all debugging code in the final > >>> compiled code. In PHP I have not been able to find anything like that. > >>> The only solution I've found is having this kind of code in every debug > >>> code block: > >>> > >>> if ($debug) { > >>> //debugging code > >>> } > >>> > >>> But this means that the debugging code is in the final compiled > >>> (interpreted) code, wasting cpu cycles even if there won't be any > >>> debugging in production. > >>> > >>> Does somebody know if there is something like conditional compilation in > >>> PHP that I can use? > >>> > >>> Regards, > >>> Herman Gomez > >>> Madrid, Spain. > >> Well PHP isn't compiled it's interpreted. Still I don't see much diff > >> and no overhead between the following: > >> > >> #ifdef(debug) > >> //debugging code > >> #endif > >> > >> ---and--- > >> > >> if (defined('DEBUG')) { > >> //debugging code > >> } > >> > >> I don't think checking a define is cpu intensive or even measurable. > >> You could "assume" that it's defined as true or false and: > >> > >> if (DEBUG === true)) { > >> //debugging code > >> } > >> > >> Still, I don't think that even checking $debug is measurable. > > > > That depends on where the conditional exists. In C you can place it > > anywhere, including wihtin a tight loop. In PHP you end up having to > > either take an overhead penalty or duplicate code to force the > > conditional outside of a tight loop. > > > > Contrast the following: > > > > <?php > > > > if( DEBUG === true ) > > { > > for( $i = 0; $i < 1000000; $i++ ) > > { > > // Do something common between DEBUG and !DEBUG modes. > > // Do something dependent on debug mode. > > } > > } > > else > > { > > for( $i = 0; $i < 1000000; $i++ ) > > { > > // Do something common between DEBUG and !DEBUG modes. > > } > > } > > > > ?> > > > > Versus: > > > > <?php > > > > for( $i = 0; $i < 1000000; $i++ ) > > { > > // Do something common between DEBUG and !DEBUG modes. > > > > if( DEBUG === true ) > > { > > // Do something dependent on debug mode. > > } > > } > > > > ?> > > > > Now depending on what "Do something common between DEBUG and !DEBUG > > modes" does, it can be a real PITA to do code duplication to optimize > > debug mode handling, but on the other hand, you really don't want to > > check if DEBUG is enabled 1 million times. > > > > If I recall though... a few years ago the answer to this question was > > that there's no reason why you can't use the C pre-processor to > > accomplish the same thing with PHP. The down side though is that then > > you lose debugging information such as the real line number on which an > > error occurs. > > > > Cheers, > > Rob. > > Great! Then the answer is: wait, wait, > > write it in C! Well PHP does have a great extension system so you can plug in your own C code ;) Cheers, Rob. -- http://www.interjinn.com Application and Templating Framework for PHP -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php