[Nagios-checkins] SF.net SVN: nagios:[2660] nagioscore/trunk/common/objects.c
Nagios network monitoring software is enterprise server monitoring
Brought to you by:
egalstad,
sawolf-nagios
From: <ag...@us...> - 2013-03-14 13:19:07
|
Revision: 2660 http://nagios.svn.sourceforge.net/nagios/?rev=2660&view=rev Author: ageric Date: 2013-03-14 13:19:00 +0000 (Thu, 14 Mar 2013) Log Message: ----------- common/objects: Make qsort() comparison functions a lot faster Since host and service objects are sorted lexicographically and carry an unsigned int as id, which is incremental based on the sort order, we can just compare integers rather than run full string comparisons when sorting host and service dependencies. I'm unsure how much impact this has on config reload times, but it will surely make it slightly faster. The fact that we remove more code than we add makes that a double win. Signed-off-by: Andreas Ericsson <ae...@op...> Modified Paths: -------------- nagioscore/trunk/common/objects.c Modified: nagioscore/trunk/common/objects.c =================================================================== --- nagioscore/trunk/common/objects.c 2013-03-14 13:18:43 UTC (rev 2659) +++ nagioscore/trunk/common/objects.c 2013-03-14 13:19:00 UTC (rev 2660) @@ -148,26 +148,17 @@ const servicedependency *a = *(servicedependency **)a_; const servicedependency *b = *(servicedependency **)b_; int ret; - - ret = strcmp(a->host_name, b->host_name); - if(ret) - return ret; - ret = strcmp(a->service_description, b->service_description); - if(ret) - return ret; - ret = strcmp(a->dependent_host_name, b->dependent_host_name); - if(ret) - return ret; - return strcmp(a->dependent_service_description, b->dependent_service_description); + ret = a->master_service_ptr->id - b->master_service_ptr->id; + return ret ? ret : a->dependent_service_ptr->id - b->dependent_service_ptr->id; } static int cmp_hdep(const void *a_, const void *b_) { const hostdependency *a = *(const hostdependency **)a_; const hostdependency *b = *(const hostdependency **)b_; int ret; + ret = a->master_host_ptr->id - b->master_host_ptr->id; + return ret ? ret : a->dependent_host_ptr->id - b->dependent_host_ptr->id; - ret = strcmp(a->host_name, b->host_name); - return ret ? ret : strcmp(a->dependent_host_name, b->dependent_host_name); } #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |