From: Willy Tarreau Date: Tue, 31 Dec 2013 22:47:37 +0000 (+0100) Subject: MINOR: checks: use an inline function for health_adjust() X-Git-Tag: v1.5-dev22~73 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9fe7aae6eb4b0576832bfaf5b10fa97cbbdf34b5;p=thirdparty%2Fhaproxy.git MINOR: checks: use an inline function for health_adjust() This function is called twice per request, and does almost always nothing. Better use an inline version to avoid entering it when we can. About 0.5% additional performance was gained this way. --- diff --git a/include/proto/checks.h b/include/proto/checks.h index f4f9c497f8..17ed803a48 100644 --- a/include/proto/checks.h +++ b/include/proto/checks.h @@ -30,10 +30,22 @@ const char *get_check_status_info(short check_status); void set_server_down(struct check *check); void set_server_up(struct check *check); int start_checks(); -void health_adjust(struct server *s, short status); +void __health_adjust(struct server *s, short status); extern struct data_cb check_conn_cb; +/* Use this one only. This inline version only ensures that we don't + * call the function when the observe mode is disabled. + */ +static inline void health_adjust(struct server *s, short status) +{ + /* return now if observing nor health check is not enabled */ + if (!s->observe || !s->check.task) + return; + + return __health_adjust(s, status); +} + #endif /* _PROTO_CHECKS_H */ /* diff --git a/src/checks.c b/src/checks.c index c055017532..c302866977 100644 --- a/src/checks.c +++ b/src/checks.c @@ -641,15 +641,14 @@ static void check_failed(struct check *check) set_server_down(check); } -void health_adjust(struct server *s, short status) +/* note: use health_adjust() only, which first checks that the observe mode is + * enabled. + */ +void __health_adjust(struct server *s, short status) { int failed; int expire; - /* return now if observing nor health check is not enabled */ - if (!s->observe || !s->check.task) - return; - if (s->observe >= HANA_OBS_SIZE) return;