Profile individual command runtime
Different approach than the one suggested by eraserhd Closes $4095
This commit is contained in:
parent
d1e19727ff
commit
da9a196fa0
|
@ -508,9 +508,17 @@ void CommandManager::execute_single_command(CommandParameters params,
|
||||||
if (command_it == m_commands.end())
|
if (command_it == m_commands.end())
|
||||||
throw command_not_found(params[0]);
|
throw command_not_found(params[0]);
|
||||||
|
|
||||||
const DebugFlags debug_flags = context.options()["debug"].get<DebugFlags>();
|
auto debug_flags = context.options()["debug"].get<DebugFlags>();
|
||||||
|
auto start = (debug_flags & DebugFlags::Profile) ? Clock::now() : Clock::time_point{};
|
||||||
if (debug_flags & DebugFlags::Commands)
|
if (debug_flags & DebugFlags::Commands)
|
||||||
write_to_debug_buffer(format("command {} {}", params[0], join(param_view, ' ')));
|
write_to_debug_buffer(format("command {}", join(params, ' ')));
|
||||||
|
|
||||||
|
on_scope_end([&] {
|
||||||
|
if (not (debug_flags & DebugFlags::Profile))
|
||||||
|
return;
|
||||||
|
auto full = std::chrono::duration_cast<std::chrono::microseconds>(Clock::now() - start);
|
||||||
|
write_to_debug_buffer(format("command {} took {} us", params[0], full.count()));
|
||||||
|
});
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue
Block a user