Optimize scope lookup hotpath
This yields a 25% overall performance increase
This commit is contained in:
@@ -19,7 +19,9 @@
|
||||
static struct ucl_object *ucl_scope_get_cell(struct ucl_scope *scope, const char *name) {
|
||||
FOREACH_LIST(scope->list, iter, item) {
|
||||
assert(item->type == UCL_TYPE_CELL);
|
||||
const char *item_name = ucl_list_nth(item, NAME_POSITION)->string;
|
||||
// This code is very hot. "I know what I'm doing" and skip the error
|
||||
// checking.
|
||||
const char *item_name = item->cell.car->string;
|
||||
if (ucl_strequal(name, item_name)) {
|
||||
return item;
|
||||
}
|
||||
@@ -39,7 +41,6 @@ struct ucl_object *ucl_scope_get(struct ucl *state, struct ucl_scope *scope, con
|
||||
cell = ucl_scope_get_cell(scope, name);
|
||||
}
|
||||
return ucl_list_nth(cell, DATA_POSITION);
|
||||
|
||||
}
|
||||
|
||||
void ucl_scope_put(struct ucl *state, struct ucl_scope *scope, const char *name, struct ucl_object *obj) {
|
||||
|
||||
Reference in New Issue
Block a user