From ea5ca58dc6e4fc68d2c5656443ae12db06720bd2 Mon Sep 17 00:00:00 2001 From: William Wilgus Date: Mon, 30 Dec 2024 23:17:57 -0500 Subject: [PATCH] optimize language.c lang_english_to_id() speed up comparisons by getting length of the supplied english string and filter based on length finally use our length to do memcmp since we know where the null is already Change-Id: I595f03ae4b08ee0d59bb9adacbe3b69f08991a9e --- apps/language.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/language.c b/apps/language.c index 53b7f8aeb5..112a25957c 100644 --- a/apps/language.c +++ b/apps/language.c @@ -137,11 +137,12 @@ int lang_english_to_id(const char *english) { int i; unsigned char *ptr = (unsigned char *) core_language_builtin; - + size_t ptrlen, len = strlen(english); for (i = 0; i < LANG_LAST_INDEX_IN_ARRAY; i++) { - if (!strcmp(ptr, english)) + ptrlen = strlen((char *)ptr); + if ((ptrlen == len) && memcmp(ptr, english, ptrlen) == 0) return i; - ptr += strlen((char *)ptr) + 1; /* advance pointer to next string */ + ptr += ptrlen + 1; /* advance pointer to next string */ } return -1; }