diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2022-12-17 11:41:38 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2022-12-17 11:41:38 +0100 |
| commit | 67620b7948016ab08cc509199dfa422ae421abb8 (patch) | |
| tree | 45ad50f9229886fe88e0c833a47b25dc7b5e6682 /src | |
| parent | 6c0500d1b636321883c89f5499c96ca04123fb8a (diff) | |
| download | box64-67620b7948016ab08cc509199dfa422ae421abb8.tar.gz box64-67620b7948016ab08cc509199dfa422ae421abb8.zip | |
Added a small cache to GetDefaultVersion function
Diffstat (limited to 'src')
| -rw-r--r-- | src/librarian/symbols.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/librarian/symbols.c b/src/librarian/symbols.c index 7ac6d810..3c37e9c0 100644 --- a/src/librarian/symbols.c +++ b/src/librarian/symbols.c @@ -286,8 +286,16 @@ void AddDefaultVersion(kh_defaultversion_t* def, const char* symname, const char } const char* GetDefaultVersion(kh_defaultversion_t* def, const char* symname) { + // small Q'nD cache of last value, because it's called many time + static const char* previous_res = NULL; + static const char* previous_name = NULL; + if(previous_name == symname) + return previous_res; khint_t k = kh_get(defaultversion, def, symname); + previous_name = symname; if(k==kh_end(def)) - return NULL; - return kh_value(def, k); + previous_res = NULL; + else + previous_res = kh_value(def, k); + return previous_res; } |