-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Interpret byte array as primitive using VarHandles #11362
Interpret byte array as primitive using VarHandles #11362
Conversation
❌ Gradle check result for 26797f8: FAILURE Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change? |
Compatibility status:Checks if related components are compatible with change 4f9d188 Incompatible componentsSkipped componentsCompatible componentsCompatible components: [https://github.com/opensearch-project/asynchronous-search.git, https://github.com/opensearch-project/security-analytics.git, https://github.com/opensearch-project/observability.git, https://github.com/opensearch-project/reporting.git, https://github.com/opensearch-project/job-scheduler.git, https://github.com/opensearch-project/opensearch-oci-object-storage.git, https://github.com/opensearch-project/sql.git, https://github.com/opensearch-project/common-utils.git, https://github.com/opensearch-project/custom-codecs.git, https://github.com/opensearch-project/security.git, https://github.com/opensearch-project/ml-commons.git, https://github.com/opensearch-project/anomaly-detection.git, https://github.com/opensearch-project/notifications.git, https://github.com/opensearch-project/index-management.git, https://github.com/opensearch-project/cross-cluster-replication.git, https://github.com/opensearch-project/neural-search.git, https://github.com/opensearch-project/alerting.git, https://github.com/opensearch-project/geospatial.git, https://github.com/opensearch-project/k-nn.git, https://github.com/opensearch-project/performance-analyzer-rca.git, https://github.com/opensearch-project/performance-analyzer.git] |
26797f8
to
20411ce
Compare
❌ Gradle check result for 20411ce: FAILURE Please examine the workflow log, locate, and copy-paste the failure(s) below, then iterate to green. Is the failure a flaky test unrelated to your change? |
Signed-off-by: Ketan Verma <ketan9495@gmail.com>
20411ce
to
3487bb6
Compare
Codecov ReportAttention:
Additional details and impacted files@@ Coverage Diff @@
## main #11362 +/- ##
============================================
+ Coverage 71.37% 71.39% +0.02%
- Complexity 59113 59139 +26
============================================
Files 4893 4893
Lines 277831 277835 +4
Branches 40367 40367
============================================
+ Hits 198288 198374 +86
+ Misses 63042 63018 -24
+ Partials 16501 16443 -58 ☔ View full report in Codecov by Sentry. |
Any reason not to add |
@andrross Mainly because the implementation comes straight from JDK and has known performance benefits. Since it's unrelated to OpenSearch anyways and is faster in all situations, adding these benchmarks felt excessive. For analogy, this is like comparing |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
Thanks @ketanv3, that makes sense. Can you rebase this PR then we can get it merged? |
libs/core/src/main/java/org/opensearch/core/util/BytesRefUtils.java
Outdated
Show resolved
Hide resolved
Signed-off-by: Ketan Verma <ketan9495@gmail.com>
❕ Gradle check result for 4f9d188: UNSTABLE
Please review all flaky tests that succeeded after retry and create an issue if one does not already exist to track the flaky failure. |
The backport to
To backport manually, run these commands in your terminal: # Navigate to the root of your repository
cd $(git rev-parse --show-toplevel)
# Fetch latest updates from GitHub
git fetch
# Create a new working tree
git worktree add ../.worktrees/OpenSearch/backport-2.x 2.x
# Navigate to the new working tree
pushd ../.worktrees/OpenSearch/backport-2.x
# Create a new branch
git switch --create backport/backport-11362-to-2.x
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 d8755582c76e1b2e297e38db0b2b3f4a7299e3c6
# Push it to GitHub
git push --set-upstream origin backport/backport-11362-to-2.x
# Go back to the original working tree
popd
# Delete the working tree
git worktree remove ../.worktrees/OpenSearch/backport-2.x Then, create a pull request where the |
@ketanv3 could you please backport to |
…t#11362) * Interpret byte array as primitive using VarHandles Signed-off-by: Ketan Verma <ketan9495@gmail.com> * Fixed offset bug Signed-off-by: Ketan Verma <ketan9495@gmail.com> --------- Signed-off-by: Ketan Verma <ketan9495@gmail.com>
…t#11362) * Interpret byte array as primitive using VarHandles Signed-off-by: Ketan Verma <ketan9495@gmail.com> * Fixed offset bug Signed-off-by: Ketan Verma <ketan9495@gmail.com> --------- Signed-off-by: Ketan Verma <ketan9495@gmail.com>
…t#11362) * Interpret byte array as primitive using VarHandles Signed-off-by: Ketan Verma <ketan9495@gmail.com> * Fixed offset bug Signed-off-by: Ketan Verma <ketan9495@gmail.com> --------- Signed-off-by: Ketan Verma <ketan9495@gmail.com>
…t#11362) * Interpret byte array as primitive using VarHandles Signed-off-by: Ketan Verma <ketan9495@gmail.com> * Fixed offset bug Signed-off-by: Ketan Verma <ketan9495@gmail.com> --------- Signed-off-by: Ketan Verma <ketan9495@gmail.com>
…t#11362) * Interpret byte array as primitive using VarHandles Signed-off-by: Ketan Verma <ketan9495@gmail.com> * Fixed offset bug Signed-off-by: Ketan Verma <ketan9495@gmail.com> --------- Signed-off-by: Ketan Verma <ketan9495@gmail.com>
…t#11362) * Interpret byte array as primitive using VarHandles Signed-off-by: Ketan Verma <ketan9495@gmail.com> * Fixed offset bug Signed-off-by: Ketan Verma <ketan9495@gmail.com> --------- Signed-off-by: Ketan Verma <ketan9495@gmail.com> Signed-off-by: Shivansh Arora <hishiv@amazon.com>
Description
This PR replaces manual conversion of
byte[]
tolong|int|short
with VarHandles. This is more readable and performant, since it would ultimately callUnsafe.unalignedAccess()
to read contiguous memory.Performance was already fast, so I don't expect much reduction in latency. But no harm in making it 2.7x faster.
Benchmark code: https://gist.github.com/ketanv3/22fb565dfea619b2307f25b161d2c522
Check List
Public documentation issue/PR createdBy submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.