home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-10-07 | 2.9 KB | 105 lines | [TEXT/CWIE] |
- /*==============================================================================
- Project: POV
-
- Version: 3
-
- File: Profiling.c
-
- Description:
- General purpose encapsulation of profiler on/off code,
- for different compiler platforms.
- ------------------------------------------------------------------------------
- Author:
- Eduard [esp] Schwan
- ------------------------------------------------------------------------------
- from Persistence of Vision(tm) Ray Tracer
- Copyright 1996 Persistence of Vision Team
- ------------------------------------------------------------------------------
- NOTICE: This source code file is provided so that users may experiment
- with enhancements to POV-Ray and to port the software to platforms other
- than those supported by the POV-Ray Team. There are strict rules under
- which you are permitted to use this file. The rules are in the file
- named POVLEGAL.DOC which should be distributed with this file. If
- POVLEGAL.DOC is not available or for more info please contact the POV-Ray
- Team Coordinator by leaving a message in CompuServe's Graphics Developer's
- Forum. The latest version of POV-Ray may be found there as well.
-
- This program is based on the popular DKB raytracer version 2.12.
- DKBTrace was originally written by David K. Buck.
- DKBTrace Ver 2.0-2.12 were written by David K. Buck & Aaron A. Collins.
- ------------------------------------------------------------------------------
- Change History:
- ==============================================================================*/
-
- // ---------------------------------------------------------------
- // Debug with profiler
- //
- #if defined(__MWERKS__)
- #include <profiler.h>
- #elif defined(THINK_C)
- #include <profile.h>
- #elif defined(applec)
- // um... MPW 3.3 needs...
- #endif
-
- // protect user from himself :-)
- static short int gProfilerOn = 0;
-
- // ---------------------------------------------------------------------
- void StartProfiling(void)
- {
- // is it already on?
- if (gProfilerOn)
- {
- return;
- }
-
- // Turn ON profiling for POV-Ray engine
- #if defined(__MWERKS__)
- #if __profile__
- // Initalize the metrowerks profiler
- ProfilerInit(collectSummary, bestTimeBase, 300, 100);
- #endif
- #elif defined(THINK_C)
- #if __option(profile)
- // Initialize the Symantec C profiler
- InitProfile(300, 100);
-
- /* Open a file for the Think C profile output to go into */
- freopen("POV.SC.Profile.Report", "w", stdout);
- #endif
- #endif
- gProfilerOn = 1;
- }
-
-
- // ---------------------------------------------------------------------
- void StopProfiling(void)
- {
- // is it already off?
- if (!gProfilerOn)
- {
- return;
- }
-
- // Turn OFF profiling for POV-Ray engine
- #if defined(__MWERKS__)
- #if __profile__
- // Dump out the profiler data to a file
- ProfilerDump("\pOptimization Profiler Info");
- // Stop the profiler
- ProfilerTerm();
- #endif
- #elif defined(THINK_C)
- #if __option(profile)
- // Dump Think C's profiler report
- DumpProfile();
- SetAppQuit(); // no reason to stick around.
- #endif
- #endif
-
- gProfilerOn = 0;
- }
-
-
-