From 2818e66a950cae2004198dfa874f99ed79e8fad6 Mon Sep 17 00:00:00 2001 From: ivanr Date: Mon, 1 Sep 2008 09:38:30 +0000 Subject: [PATCH] Tidy up the code for the performance-measurement mode. Remove the per-phase measurements, which don't seem to work (at least not in my case). --- apache2/re.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/apache2/re.c b/apache2/re.c index b103a81f..dd0f1a9d 100644 --- a/apache2/re.c +++ b/apache2/re.c @@ -755,13 +755,15 @@ void msre_engine_destroy(msre_engine *engine) { * transaction phase. */ #if defined(PERFORMANCE_MEASUREMENT) + +#define PERFORMANCE_MEASUREMENT_LOOP 1000 + static apr_status_t msre_ruleset_process_phase_(msre_ruleset *ruleset, modsec_rec *msr); apr_status_t msre_ruleset_process_phase(msre_ruleset *ruleset, modsec_rec *msr) { apr_array_header_t *arr = NULL; msre_rule **rules = NULL; apr_status_t rc; - apr_time_t time1; int i; switch (msr->phase) { @@ -791,22 +793,24 @@ apr_status_t msre_ruleset_process_phase(msre_ruleset *ruleset, modsec_rec *msr) rule->execution_time = 0; } - time1 = apr_time_now(); - - for (i = 0; i < 10000; i++) { + for (i = 0; i < PERFORMANCE_MEASUREMENT_LOOP; i++) { rc = msre_ruleset_process_phase_(ruleset, msr); } - msr_log(msr, 1, "Phase %d: %" APR_TIME_T_FMT " usec (inaccurate)", msr->phase, ((apr_time_now() - time1) / 10000)); + msr_log(msr, 1, "Phase %d", msr->phase); rules = (msre_rule **)arr->elts; for (i = 0; i < arr->nelts; i++) { msre_rule *rule = rules[i]; + + /* Ignore markers, which are never processed. */ + if (rule->placeholder == RULE_PH_MARKER) continue; + msr_log(msr, 1, "Rule %pp [id \"%s\"][file \"%s\"][line \"%d\"]: %u usec", rule, ((rule->actionset != NULL)&&(rule->actionset->id != NULL)) ? rule->actionset->id : "-", rule->filename != NULL ? rule->filename : "-", rule->line_num, - (rule->execution_time / 10000)); + (rule->execution_time / PERFORMANCE_MEASUREMENT_LOOP)); } return rc;