FFM-11332 - Refactor evaluation logic to remove inefficiencies in the GetAttr(ibute) function #155
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What
Why
Previous performance enhancements, while effective in certain aspects, led to unnecessary overuse of strings.ToLower and fmt.Sprintf. The frequent use of fmt.Sprintf was particularly redundant as most attributes are cast directly to a string value. Similarly, the application of strings.ToLower on every function call was excessive since the inputs are consistently lowercase. These changes are aimed at refining the efficiency of the getAttr function and reducing computational overhead.
Benchmarking after these changes:
Benchmarking On Version 0.1.20
Benchmarking On Version 0.1.18
Summary between this code (latest) and 0.1.18
Efficiency improvement for each benchmark test when comparing the latest version to version 0.1.18, shown in times faster than the original and in brackets where a positive percentage indicates a performance gain (improved efficiency):
These figures indicate substantial efficiency gains in the latest version across most benchmarks, with significant reductions in execution time for many operations, highlighting considerable performance optimisation.