* Performance improvement

* Added ancestor config cache indicating wether the node or an ancestor is config false or true
  * Improved yang cardinality lookup
* Added yang_init(), called from all apps using yang
This commit is contained in:
Olof hagsand 2021-11-18 08:37:54 +01:00
parent 0626de9431
commit b91ce762d5
19 changed files with 415 additions and 63 deletions

View file

@ -3190,11 +3190,29 @@ yang_config_ancestor(yang_stmt *ys)
yp = ys;
do {
if (yang_config(yp) == 0)
#ifdef USE_CONFIG_FLAG_CACHE
if (yang_flag_get(yp, YANG_FLAG_CONFIG_CACHE))
return yang_flag_get(yp, YANG_FLAG_CONFIG_VALUE)?1:0;
#endif
if (yang_config(yp) == 0){
#ifdef USE_CONFIG_FLAG_CACHE
yang_flag_set(yp, YANG_FLAG_CONFIG_CACHE);
yang_flag_reset(yp, YANG_FLAG_CONFIG_VALUE);
#endif
return 0;
if (yang_keyword_get(yp) == Y_INPUT || yang_keyword_get(yp) == Y_OUTPUT || yang_keyword_get(yp) == Y_NOTIFICATION)
}
if (yang_keyword_get(yp) == Y_INPUT || yang_keyword_get(yp) == Y_OUTPUT || yang_keyword_get(yp) == Y_NOTIFICATION){
#ifdef USE_CONFIG_FLAG_CACHE
yang_flag_set(yp, YANG_FLAG_CONFIG_CACHE);
yang_flag_reset(yp, YANG_FLAG_CONFIG_VALUE);
#endif
return 0;
}
} while((yp = yang_parent_get(yp)) != NULL);
#ifdef USE_CONFIG_FLAG_CACHE
yang_flag_set(ys, YANG_FLAG_CONFIG_CACHE);
yang_flag_set(ys, YANG_FLAG_CONFIG_VALUE);
#endif
return 1;
}
@ -3678,6 +3696,12 @@ yang_sort_subelements(yang_stmt *ys)
return retval;
}
int
yang_init(clicon_handle h)
{
return yang_cardinality_init(h);
}
#ifdef XML_EXPLICIT_INDEX
/*! Mark element as search_index in list
* @retval 0 OK