From c76275ee960c708408646d8a680b201b27cb9c1a Mon Sep 17 00:00:00 2001 From: "Jorge Boncompte [DTI2]" Date: Mon, 7 May 2012 16:52:55 +0000 Subject: bgpd: optimize loops on [e]community_hash_make() This change reduces loop count. Less jumps. * bgp_community.c: One loop per community. * bgp_ecommunity.c: One loop per ecommunity. Signed-off-by: Jorge Boncompte [DTI2] Signed-off-by: David Lamparter --- bgpd/bgp_ecommunity.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'bgpd/bgp_ecommunity.c') diff --git a/bgpd/bgp_ecommunity.c b/bgpd/bgp_ecommunity.c index 9f4aaa4b..5722425e 100644 --- a/bgpd/bgp_ecommunity.c +++ b/bgpd/bgp_ecommunity.c @@ -233,15 +233,22 @@ unsigned int ecommunity_hash_make (void *arg) { const struct ecommunity *ecom = arg; + int size = ecom->size * ECOMMUNITY_SIZE; + u_int8_t *pnt = ecom->val; + unsigned int key = 0; int c; - unsigned int key; - u_int8_t *pnt; - key = 0; - pnt = ecom->val; - - for (c = 0; c < ecom->size * ECOMMUNITY_SIZE; c++) - key += pnt[c]; + for (c = 0; c < size; c += ECOMMUNITY_SIZE) + { + key += pnt[c]; + key += pnt[c + 1]; + key += pnt[c + 2]; + key += pnt[c + 3]; + key += pnt[c + 4]; + key += pnt[c + 5]; + key += pnt[c + 6]; + key += pnt[c + 7]; + } return key; } -- cgit v1.2.1