mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-14 13:30:48 +03:00
0023880: Integration of grid "ncl" into the new testing system
Function perf_sprint_all_meters added in OSD_PerfMeter.h to allow printing to string buffer rather than stdout. Macro PERF_PRINT_ALL converted to functional form. Command dperf added in DRAW to print and conditionally reset all meters. Description of these tools is added in Debug Hints. Modified output of command QANTestNCollectionPerformance. Added test case perf/ncollection/A1 Modified ratio of performance to check all platforms Small correction of test-case for Windows platform
This commit is contained in:
@@ -218,18 +218,36 @@ int perf_get_meter (const char * const MeterName,
|
||||
Function : perf_print_all_meters
|
||||
Purpose : Prints on stdout the cumulated time and the number of
|
||||
enters for each meter in MeterTable;
|
||||
resets all meters
|
||||
Output : none
|
||||
Returns : none
|
||||
resets all meters if reset is non-null
|
||||
======================================================================*/
|
||||
void perf_print_all_meters (void)
|
||||
void perf_print_all_meters (int reset)
|
||||
{
|
||||
char buffer[MAX_METERS * 256];
|
||||
perf_sprint_all_meters (buffer, MAX_METERS * 256, reset);
|
||||
printf ("%s", buffer);
|
||||
}
|
||||
|
||||
/*======================================================================
|
||||
Function : perf_print_all_meters
|
||||
Purpose : Prints to string buffer the cumulated time and the number of
|
||||
enters for each meter in MeterTable;
|
||||
resets all meters if reset is non-null
|
||||
======================================================================*/
|
||||
void perf_sprint_all_meters (char *buffer, int length, int reset)
|
||||
{
|
||||
char string[256];
|
||||
|
||||
int i;
|
||||
for (i=0; i<nb_meters; i++) {
|
||||
const t_TimeCounter * const ptc = &MeterTable[i];
|
||||
if (ptc && ptc->nb_enter) {
|
||||
printf (" Perf meter results :"
|
||||
" enters seconds \xe6sec/enter\n");
|
||||
int n = sprintf (string, " Perf meter results : enters seconds sec/enter\n");
|
||||
if (n < length)
|
||||
{
|
||||
memcpy (buffer, string, n);
|
||||
buffer += n;
|
||||
length -= n;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -240,18 +258,29 @@ void perf_print_all_meters (void)
|
||||
if (ptc && ptc->nb_enter) {
|
||||
const double secs = ptc->cumul_time;
|
||||
|
||||
int n = 0;
|
||||
if (ptc->start_time)
|
||||
printf ("Warning : meter %s has not been stopped\n", ptc->name);
|
||||
n = sprintf (string, "Warning : meter %42s has not been stopped\n", ptc->name);
|
||||
|
||||
printf ("%-42s : %7d %8.2f %10.2f\n",
|
||||
ptc->name, ptc->nb_enter, secs,
|
||||
(secs>0. ? 1000000 * secs/ptc->nb_enter : 0.));
|
||||
n += sprintf (string + n, "%-42s : %7d %8.2f %10.2f\n",
|
||||
ptc->name, ptc->nb_enter, secs,
|
||||
(secs>0. ? 1000000 * secs/ptc->nb_enter : 0.));
|
||||
if (n < length)
|
||||
{
|
||||
memcpy (buffer, string, n);
|
||||
buffer += n;
|
||||
length -= n;
|
||||
}
|
||||
|
||||
ptc->cumul_time = 0;
|
||||
ptc->start_time = 0;
|
||||
ptc->nb_enter = 0;
|
||||
if (reset)
|
||||
{
|
||||
ptc->cumul_time = 0;
|
||||
ptc->start_time = 0;
|
||||
ptc->nb_enter = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
*buffer = '\0';
|
||||
}
|
||||
|
||||
/*======================================================================
|
||||
@@ -261,17 +290,7 @@ Returns : none
|
||||
======================================================================*/
|
||||
void perf_close_meter (const char * const MeterName)
|
||||
{
|
||||
const int ic = find_meter (MeterName);
|
||||
if (ic >= 0 && MeterTable[ic].nb_enter) {
|
||||
t_TimeCounter * const ptc = &MeterTable[ic];
|
||||
if (ptc->start_time)
|
||||
printf (" ===> Warning : meter %s has not been stopped\n", ptc->name);
|
||||
printf (" ===> [%s] : %d enters, %9.3f seconds\n",
|
||||
ptc->name, ptc->nb_enter, ptc->cumul_time);
|
||||
ptc->cumul_time = 0;
|
||||
ptc->start_time = 0;
|
||||
ptc->nb_enter = 0;
|
||||
}
|
||||
perf_close_imeter (find_meter (MeterName));
|
||||
}
|
||||
|
||||
/*======================================================================
|
||||
@@ -311,7 +330,7 @@ void perf_destroy_all_meters (void)
|
||||
|
||||
void perf_print_and_destroy (void)
|
||||
{
|
||||
perf_print_all_meters ();
|
||||
perf_print_all_meters (0);
|
||||
perf_destroy_all_meters ();
|
||||
}
|
||||
|
||||
|
@@ -65,8 +65,8 @@
|
||||
* @def PERF_PRINT_ALL
|
||||
* Prints all existing meters which have been entered at least once and resets them.
|
||||
*/
|
||||
#define PERF_PRINT_ALL { \
|
||||
perf_print_all_meters(); \
|
||||
#define PERF_PRINT_ALL() { \
|
||||
perf_print_all_meters(1); \
|
||||
}
|
||||
|
||||
#else
|
||||
@@ -74,7 +74,7 @@
|
||||
#define PERF_START_METER(_m_name)
|
||||
#define PERF_STOP_METER(_m_name)
|
||||
#define PERF_CLOSE_METER(_m_name)
|
||||
#define PERF_PRINT_ALL
|
||||
#define PERF_PRINT_ALL()
|
||||
#endif
|
||||
|
||||
/**
|
||||
@@ -143,9 +143,18 @@ Standard_EXPORTEXTERNC void perf_close_imeter (const int theMeterId);
|
||||
|
||||
/**
|
||||
* Prints on stdout the cumulated time and the number of enters for each alive meter which have the number of enters > 0.
|
||||
* Resets all meters if reset is non-null.
|
||||
*/
|
||||
Standard_EXPORTEXTERNC void perf_print_all_meters (int reset);
|
||||
|
||||
/**
|
||||
* Prints to supplied string buffer the cumulated time and the number of enters
|
||||
* for each alive meter with the number of enters > 0.
|
||||
* If buffer length is not sufficient, data of some meters may be lost.
|
||||
* It is recommended to reserve 256 bytes per meter, 25600 bytes should fit all.
|
||||
* Resets all meters.
|
||||
*/
|
||||
Standard_EXPORTEXTERNC void perf_print_all_meters (void);
|
||||
Standard_EXPORTEXTERNC void perf_sprint_all_meters (char *buffer, int length, int reset);
|
||||
|
||||
/**
|
||||
* Deletes all meters and frees memory.
|
||||
@@ -154,7 +163,7 @@ Standard_EXPORTEXTERNC void perf_destroy_all_meters (void);
|
||||
|
||||
/**
|
||||
* ATTENTION!!!
|
||||
* This func calls both perf_print_all_meters() and perf_destroy_all_meters()
|
||||
* This func calls perf_print_all_meters() and perf_destroy_all_meters()
|
||||
* and is called automatically at the end of a program via system call atexit().
|
||||
*/
|
||||
Standard_EXPORTEXTERNC void perf_print_and_destroy (void);
|
||||
|
Reference in New Issue
Block a user