summaryrefslogtreecommitdiff
path: root/sql/sql_profile.cc
diff options
context:
space:
mode:
authorSergey Vojtovich <svoj@mariadb.org>2015-04-15 11:29:01 +0400
committerSergey Vojtovich <svoj@mariadb.org>2015-05-13 10:43:13 +0400
commit55d5af733d97808a1479b185c029ac0121c0f158 (patch)
treeb8cf068171645ffda853e03e631d8d1602047053 /sql/sql_profile.cc
parentc8ad5b2f1223d8bb6edcdcb56317172206c9fd8e (diff)
downloadmariadb-git-55d5af733d97808a1479b185c029ac0121c0f158.tar.gz
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.
Diffstat (limited to 'sql/sql_profile.cc')
-rw-r--r--sql/sql_profile.cc29
1 files changed, 2 insertions, 27 deletions
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