Alembic: addition of a scope timer to perform basic profiling.
This commit is contained in:
@@ -37,6 +37,8 @@ extern "C" {
|
|||||||
#include "DNA_object_types.h"
|
#include "DNA_object_types.h"
|
||||||
|
|
||||||
#include "BLI_math.h"
|
#include "BLI_math.h"
|
||||||
|
|
||||||
|
#include "PIL_time.h"
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string get_id_name(Object *ob)
|
std::string get_id_name(Object *ob)
|
||||||
@@ -523,3 +525,15 @@ AbcObjectReader *create_reader(const Alembic::AbcGeom::IObject &object, ImportSe
|
|||||||
|
|
||||||
return reader;
|
return reader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ********************** */
|
||||||
|
|
||||||
|
ScopeTimer::ScopeTimer(const char *message)
|
||||||
|
: m_message(message)
|
||||||
|
, m_start(PIL_check_seconds_timer())
|
||||||
|
{}
|
||||||
|
|
||||||
|
ScopeTimer::~ScopeTimer()
|
||||||
|
{
|
||||||
|
std::fprintf(stderr, "%s: %fs\n", m_message, PIL_check_seconds_timer() - m_start);
|
||||||
|
}
|
||||||
|
|||||||
@@ -146,4 +146,23 @@ ABC_INLINE void copy_yup_from_zup(short yup[3], const short zup[3])
|
|||||||
yup[2] = -zup[1];
|
yup[2] = -zup[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* *************************** */
|
||||||
|
|
||||||
|
#undef ABC_DEBUG_TIME
|
||||||
|
|
||||||
|
class ScopeTimer {
|
||||||
|
const char *m_message;
|
||||||
|
double m_start;
|
||||||
|
|
||||||
|
public:
|
||||||
|
ScopeTimer(const char *message);
|
||||||
|
~ScopeTimer();
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef ABC_DEBUG_TIME
|
||||||
|
# define SCOPE_TIMER(message) ScopeTimer prof(message)
|
||||||
|
#else
|
||||||
|
# define SCOPE_TIMER(message)
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* __ABC_UTIL_H__ */
|
#endif /* __ABC_UTIL_H__ */
|
||||||
|
|||||||
@@ -542,6 +542,8 @@ ABC_INLINE bool is_mesh_and_strands(const IObject &object)
|
|||||||
|
|
||||||
static void import_startjob(void *user_data, short *stop, short *do_update, float *progress)
|
static void import_startjob(void *user_data, short *stop, short *do_update, float *progress)
|
||||||
{
|
{
|
||||||
|
SCOPE_TIMER("Alembic import, objects reading and creation");
|
||||||
|
|
||||||
ImportJobData *data = static_cast<ImportJobData *>(user_data);
|
ImportJobData *data = static_cast<ImportJobData *>(user_data);
|
||||||
|
|
||||||
data->stop = stop;
|
data->stop = stop;
|
||||||
@@ -677,6 +679,8 @@ static void import_startjob(void *user_data, short *stop, short *do_update, floa
|
|||||||
|
|
||||||
static void import_endjob(void *user_data)
|
static void import_endjob(void *user_data)
|
||||||
{
|
{
|
||||||
|
SCOPE_TIMER("Alembic import, cleanup");
|
||||||
|
|
||||||
ImportJobData *data = static_cast<ImportJobData *>(user_data);
|
ImportJobData *data = static_cast<ImportJobData *>(user_data);
|
||||||
|
|
||||||
std::vector<AbcObjectReader *>::iterator iter;
|
std::vector<AbcObjectReader *>::iterator iter;
|
||||||
|
|||||||
Reference in New Issue
Block a user