Date: Mon, 23 Aug 2021 01:16:13 GMT From: Alexander Motin <mav@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Subject: git: 44e27939b465 - stable/12 - Optimize res_find(). Message-ID: <202108230116.17N1GDbX016229@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch stable/12 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=44e27939b4653a8a3afa51cb83abbe53f6c25065 commit 44e27939b4653a8a3afa51cb83abbe53f6c25065 Author: Alexander Motin <mav@FreeBSD.org> AuthorDate: 2021-08-09 01:34:33 +0000 Commit: Alexander Motin <mav@FreeBSD.org> CommitDate: 2021-08-23 01:16:09 +0000 Optimize res_find(). When the device name is provided, we can simply run strncmp() for each line to quickly skip unrelated ones, that is much faster than sscanf() and only then strcmp(). MFC after: 2 weeks (cherry picked from commit 696fca3fd491972e615195f2ce94598b9c469cac) --- sys/kern/subr_hints.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sys/kern/subr_hints.c b/sys/kern/subr_hints.c index ba30e23d9f8a..507c99eee51f 100644 --- a/sys/kern/subr_hints.c +++ b/sys/kern/subr_hints.c @@ -126,7 +126,7 @@ res_find(char **hintp_cookie, int *line, int *startln, const char **ret_name, int *ret_namelen, int *ret_unit, const char **ret_resname, int *ret_resnamelen, const char **ret_value) { - int fbacklvl = FBACK_MDENV, i = 0, n = 0; + int fbacklvl = FBACK_MDENV, i = 0, n = 0, namelen; char r_name[32]; int r_unit; char r_resname[32]; @@ -229,12 +229,16 @@ fallback: i = 0; } + if (name) + namelen = strlen(name); cp = hintp; while (cp) { (*line)++; if (strncmp(cp, "hint.", 5) != 0) goto nexthint; - n = sscanf(cp, "hint.%32[^.].%d.%32[^=]=%127s", r_name, &r_unit, + if (name && strncmp(cp + 5, name, namelen) != 0) + goto nexthint; + n = sscanf(cp + 5, "%32[^.].%d.%32[^=]=%127s", r_name, &r_unit, r_resname, r_value); if (n != 4) { printf("CONFIG: invalid hint '%s'\n", cp);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202108230116.17N1GDbX016229>