lean4-htt/src/library/profiling.cpp
2021-08-04 16:40:57 +02:00

46 lines
1.4 KiB
C++

/*
Copyright (c) 2017 Microsoft Corporation. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Author: Gabriel Ebner
*/
#include "library/profiling.h"
#include "util/option_declarations.h"
#ifndef LEAN_DEFAULT_PROFILER
#define LEAN_DEFAULT_PROFILER false
#endif
#ifndef LEAN_DEFAULT_PROFILER_THRESHOLD
#define LEAN_DEFAULT_PROFILER_THRESHOLD 100
#endif
namespace lean {
static name * g_profiler = nullptr;
static name * g_profiler_threshold = nullptr;
bool get_profiler(options const & opts) {
return opts.get_bool(*g_profiler, LEAN_DEFAULT_PROFILER);
}
second_duration get_profiling_threshold(options const & opts) {
return second_duration(static_cast<double>(opts.get_unsigned(*g_profiler_threshold, LEAN_DEFAULT_PROFILER_THRESHOLD))/1000.0);
}
void initialize_profiling() {
g_profiler = new name{"profiler"};
mark_persistent(g_profiler->raw());
g_profiler_threshold = new name{"profiler", "threshold"};
mark_persistent(g_profiler_threshold->raw());
register_bool_option(*g_profiler, LEAN_DEFAULT_PROFILER, "(profiler) profile tactics and vm_eval command");
register_unsigned_option(*g_profiler_threshold, LEAN_DEFAULT_PROFILER_THRESHOLD,
"(profiler) threshold in milliseconds, profiling times under threshold will not be reported");
}
void finalize_profiling() {
delete g_profiler;
delete g_profiler_threshold;
}
}