wxArt2D
prflcnt.h
Go to the documentation of this file.
1 /*! \file wx/genart/prflcnt.h
2  \brief profiling classes
3  \author Michael Sögtrop
4  \date Created 08/05/2004
5 
6  Copyright: 2004-2004 (c) Michael Sögtrop
7 
8  Licence: wxWidgets Licence
9 
10  RCS-ID: $Id: prflcnt.h,v 1.6 2005/08/16 16:47:52 titato Exp $
11 */
12 
13 #if(defined(TRACE_H))
14 #pragma message(__FILE__)
15 #endif
16 
17 ///////////////////////////////////////////////////////////////////////////////
18 //
19 // Schutz gegen doppelte Einbindung
20 //
21 ///////////////////////////////////////////////////////////////////////////////
22 
23 #if(!defined(PrflCnt_H))
24 #define PrflCnt_H
25 
26 ///////////////////////////////////////////////////////////////////////////////
27 //
28 // Test der vorausgesetzten include Dateien
29 //
30 ///////////////////////////////////////////////////////////////////////////////
31 
32 #if(!defined(Prfl_H))
33 #error Please include prfl.h before including prflcnt.h
34 #endif
35 
36 /*! profiling time
37 
38  Zusammenfassung der Anwendungsdetails der Klasse a2dProfilerCount
39 
40  a2dProfilerCount dient dazu die Anzahl der Durchläufe durch eine bestimmte
41  Programmzeile zu zählen. Der Vorteil gegnüber dem normalen Profiler liegt
42  darin, daß das ganze Programm nicht wesentlich gebremst wird. Außerdem kann
43  man da messen, wo man es für richtig hält, und nicht nur an Funktionsen. Die
44  Anwendung ist denkbar einfach. An der zu zählenden Stell wird das folgende
45  Makro eingefügt:
46 
47  PRFL_CNT(InteressanteStelle)
48 
49  Möchte man mehrere Zähler an verschiedenen Stellen zusammenfassen, kann man
50  den Zähler an einer Stelle mit dem folgenden Makro deklariern
51 
52  PRFL_CNT_DCLR(InteressanteStelle)
53 
54  und dann an mehreren Stellen mit dem folgenden Makro zählen
55 
56  PRFL_CNT_CNT(InteressanteStelle)
57 
58  Die Profileinformation wird am Programmende automatisch in die Datei Profile.txt
59  gesichert.
60 
61  Die Argumente in den Klammern der Makros müssen gültige C-Identifier sein.
62  Dem Identifier wird das Präfix prfl_ vorgestellt. Mit diesem Präfix muß er in der Funktion eindeutig sein. Der Identifier sollte nicht länger als 20 Zeichen sein Profiling ist nur eingeschaltet, wenn das macro PRFL_ENBL definiert ist oder wenn die Datei PrflEnbl.h includiert wird. siehe auch: prflCntHstg.h prflTmr.h prfl.h */ class a2dProfilerCount : public a2dProfiler { public: // Standard Erzeugungsoperator a2dProfilerCount( wxString idIn ); // Wird bei jedem Durchlauf aufgerufen void Cnt() {cnt++;} // Vernichtungsoperator ~a2dProfilerCount (); protected: double cnt; }; //***************************************************************************** //* //* Definition von Macros //* //***************************************************************************** // man könnte die Deklaration und Cnt in {} einschließen, so daß der id nicht // eindeutig zu sein bräuchte. Es schadet aber nix, wenn jeder id eindeutig ist #if(defined(PRFL_ENBL)) #define PRFL_CNT(id) {static a2dProfilerCount prfl_##id( wxT(#id) ); prfl_##id.Cnt();} #define PRFL_CNT_DCLR(id) {static a2dProfilerCount prfl_##id( wxT(#id) );} #define PRFL_CNT_CNT(id) {prfl_##id.Cnt();} #else #define PRFL_CNT(id) #define PRFL_CNT_DCLR(id) #define PRFL_CNT_CNT(id) #endif #endif // PrflCnt_H
63  er in der Funktion eindeutig sein.
64  Der Identifier sollte nicht länger als 20 Zeichen sein
65 
66  Profiling ist nur eingeschaltet, wenn das macro PRFL_ENBL definiert ist
67  oder wenn die Datei PrflEnbl.h includiert wird.
68 
69  siehe auch:
70  prflCntHstg.h
71  prflTmr.h
72  prfl.h
73 */
75 {
76 public:
77  // Standard Erzeugungsoperator
78  a2dProfilerCount( wxString idIn );
79 
80  // Wird bei jedem Durchlauf aufgerufen
81  void Cnt() {cnt++;}
82 
83  // Vernichtungsoperator
84  ~a2dProfilerCount ();
85 
86 protected:
87  double
88  cnt;
89 };
90 
91 
92 //*****************************************************************************
93 //*
94 //* Definition von Macros
95 //*
96 //*****************************************************************************
97 
98 // man könnte die Deklaration und Cnt in {} einschließen, so daß der id nicht
99 // eindeutig zu sein bräuchte. Es schadet aber nix, wenn jeder id eindeutig ist
100 
101 #if(defined(PRFL_ENBL))
102 #define PRFL_CNT(id) {static a2dProfilerCount prfl_##id( wxT(#id) ); prfl_##id.Cnt();}
103 #define PRFL_CNT_DCLR(id) {static a2dProfilerCount prfl_##id( wxT(#id) );}
104 #define PRFL_CNT_CNT(id) {prfl_##id.Cnt();}
105 #else
106 #define PRFL_CNT(id)
107 #define PRFL_CNT_DCLR(id)
108 #define PRFL_CNT_CNT(id)
109 #endif
110 
111 #endif // PrflCnt_H
prflcnt.h Source File -- Sun Oct 12 2014 17:04:23 -- Sun Oct 12 2014 -- 1.8.5 -- wxArt2D -- . -- Main Page Reference Documentation