From 55d5af733d97808a1479b185c029ac0121c0f158 Mon Sep 17 00:00:00 2001 From: Sergey Vojtovich Date: Wed, 15 Apr 2015 11:29:01 +0400 Subject: MDEV-7945 - THD::enter_stage() takes 0.48% in OLTP RO THD::enter_stage() optimizations: - stage backup code moved to THD::backup_stage(), saves one condition - moved check for "new_stage" out to callers that actually need it - remnants of enter_stage() moved to sql_class.h so it can be inlined THD::enter_stage() overhead dropped 0.48% -> 0.07%. PROFILING::status_change() optimizations: - "status_arg" is now checked by QUERY_PROFILE::new_status() - no need to check "enabled": !enabled && current is impossible - remnants of status_change() moved to sql_profile.h so it can be inlined PROFILING::status_change() overhead dropped 0.1% -> out of radar. --- sql/sql_profile.cc | 29 ++--------------------------- 1 file changed, 2 insertions(+), 27 deletions(-) (limited to 'sql/sql_profile.cc') diff --git a/sql/sql_profile.cc b/sql/sql_profile.cc index 26d515842ed..2eaaea41f18 100644 --- a/sql/sql_profile.cc +++ b/sql/sql_profile.cc @@ -302,7 +302,8 @@ void QUERY_PROFILE::new_status(const char *status_arg, PROF_MEASUREMENT *prof; DBUG_ENTER("QUERY_PROFILE::status"); - DBUG_ASSERT(status_arg != NULL); + if (!status_arg) + DBUG_VOID_RETURN; if ((function_arg != NULL) && (file_arg != NULL)) prof= new PROF_MEASUREMENT(this, status_arg, function_arg, base_name(file_arg), line_arg); @@ -336,32 +337,6 @@ PROFILING::~PROFILING() delete current; } -/** - A new state is given, and that signals the profiler to start a new - timed step for the current query's profile. - - @param status_arg name of this step - @param function_arg calling function (usually supplied from compiler) - @param function_arg calling file (usually supplied from compiler) - @param function_arg calling line number (usually supplied from compiler) -*/ -void PROFILING::status_change(const char *status_arg, - const char *function_arg, - const char *file_arg, unsigned int line_arg) -{ - DBUG_ENTER("PROFILING::status_change"); - - if (status_arg == NULL) /* We don't know how to handle that */ - DBUG_VOID_RETURN; - - if (current == NULL) /* This profile was already discarded. */ - DBUG_VOID_RETURN; - - if (unlikely(enabled)) - current->new_status(status_arg, function_arg, file_arg, line_arg); - - DBUG_VOID_RETURN; -} /** Prepare to start processing a new query. It is an error to do this -- cgit v1.2.1