[Enhancement] Enhance performance of ob_wc_mb_utf8mb4 #1593
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.
Task Description
Enhance performance of function 'ob_wc_mb_utf8mb4'.
When test Oceanbase with Sysbench OLTP_READ_ONLY, ob_wc_mb_utf8mb4 is one of hotspots. It uses ~3.4% CPU time. The line of 'switch (bytes)' uses 57% CPU time of whole function. switch is less efficient due to indirect jump involved.
Solution Description
Eliminating 'switch' by moving related code into 'if/else' can avoid indirect jump and improve performance accordingly. Using Sysbench OLTP_READ_ONLY test, Oceanbase performance can be improved ~2% and percentage of CPU time by ob_wc_mb_utf8mb4 can be reduced from 3.4% to 2.2%.
Passed Regressions
Test manually.
Upgrade Compatibility
N/A
Other Information
N/A
Release Note
N/A