Blender  V3.3
subdiv_stats.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2018 Blender Foundation. All rights reserved. */
3 
8 #include "BKE_subdiv.h"
9 
10 #include <stdio.h>
11 
12 #include "PIL_time.h"
13 
15 {
16  stats->topology_refiner_creation_time = 0.0;
17  stats->subdiv_to_mesh_time = 0.0;
18  stats->subdiv_to_mesh_geometry_time = 0.0;
19  stats->evaluator_creation_time = 0.0;
20  stats->evaluator_refine_time = 0.0;
21  stats->subdiv_to_ccg_time = 0.0;
22  stats->subdiv_to_ccg_elements_time = 0.0;
23  stats->topology_compare_time = 0.0;
24 }
25 
27 {
28  stats->begin_timestamp_[value] = PIL_check_seconds_timer();
29 }
30 
32 {
33  stats->values_[value] = PIL_check_seconds_timer() - stats->begin_timestamp_[value];
34 }
35 
37 {
38  stats->values_[value] = 0.0;
39 }
40 
42 {
43 #define STATS_PRINT_TIME(stats, value, description) \
44  do { \
45  if ((stats)->value > 0.0) { \
46  printf(" %s: %f (sec)\n", description, (stats)->value); \
47  } \
48  } while (false)
49 
50  printf("Subdivision surface statistics:\n");
51 
52  STATS_PRINT_TIME(stats, topology_refiner_creation_time, "Topology refiner creation time");
53  STATS_PRINT_TIME(stats, subdiv_to_mesh_time, "Subdivision to mesh time");
54  STATS_PRINT_TIME(stats, subdiv_to_mesh_geometry_time, " Geometry time");
55  STATS_PRINT_TIME(stats, evaluator_creation_time, "Evaluator creation time");
56  STATS_PRINT_TIME(stats, evaluator_refine_time, "Evaluator refine time");
57  STATS_PRINT_TIME(stats, subdiv_to_ccg_time, "Subdivision to CCG time");
58  STATS_PRINT_TIME(stats, subdiv_to_ccg_elements_time, " Elements time");
59  STATS_PRINT_TIME(stats, topology_compare_time, "Topology comparison time");
60 
61 #undef STATS_PRINT_TIME
62 }
eSubdivStatsValue
Definition: BKE_subdiv.h:75
Platform independent time functions.
double topology_compare_time
Definition: BKE_subdiv.h:108
double topology_refiner_creation_time
Definition: BKE_subdiv.h:94
double begin_timestamp_[NUM_SUBDIV_STATS_VALUES]
Definition: BKE_subdiv.h:115
double values_[NUM_SUBDIV_STATS_VALUES]
Definition: BKE_subdiv.h:110
double subdiv_to_mesh_time
Definition: BKE_subdiv.h:96
double evaluator_refine_time
Definition: BKE_subdiv.h:102
double subdiv_to_ccg_time
Definition: BKE_subdiv.h:104
double subdiv_to_ccg_elements_time
Definition: BKE_subdiv.h:106
double subdiv_to_mesh_geometry_time
Definition: BKE_subdiv.h:98
double evaluator_creation_time
Definition: BKE_subdiv.h:100
void BKE_subdiv_stats_init(SubdivStats *stats)
Definition: subdiv_stats.c:14
void BKE_subdiv_stats_end(SubdivStats *stats, eSubdivStatsValue value)
Definition: subdiv_stats.c:31
void BKE_subdiv_stats_reset(SubdivStats *stats, eSubdivStatsValue value)
Definition: subdiv_stats.c:36
void BKE_subdiv_stats_begin(SubdivStats *stats, eSubdivStatsValue value)
Definition: subdiv_stats.c:26
#define STATS_PRINT_TIME(stats, value, description)
void BKE_subdiv_stats_print(const SubdivStats *stats)
Definition: subdiv_stats.c:41
double PIL_check_seconds_timer(void)
Definition: time.c:64