Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@GuyAv46
Copy link
Collaborator

@GuyAv46 GuyAv46 commented Aug 13, 2025

Describe the changes in the pull request

Fix "has map" performance by using the cached boolean value resp3 of the reply, instead of checking with the redis API for every serialized result.

The solution assumes redis version >= 7 (which is true for 2.8 and later)
The macros replaced are:

#define _ReplyMap(ctx) (RedisModule_ReplyWithMap != NULL && is_resp3(ctx))
#define _ReplySet(ctx) (RedisModule_ReplyWithSet != NULL && is_resp3(ctx))

But since 2.8 and later versions reject redis < 7.1, the API is available, so they can be reduced to the is_resp3(ctx) check.

Mark if applicable

  • This PR introduces API changes
  • This PR introduces serialization changes

@fcostaoliveira
Copy link
Contributor

fcostaoliveira commented Aug 13, 2025

Automated performance analysis summary

This comment was automatically generated given there is performance data available.

In summary:

  • Detected a total of 29 stable tests between versions.
  • Detected a total of 9 highly unstable benchmarks (9 baseline).
  • Latency analysis confirmed regressions in 1 of the unstable tests:
  • Detected a total of 2 improvements above the improvement water line.

You can check a comparison in detail via the grafana link

Performance Improvements - Comparison between master and guyav-fix_hasMap_performance.

Time Period from 30 days ago. (environment used: oss-standalone)

Test Case Baseline master (median obs. +- std.dev) Comparison guyav-fix_hasMap_performance (median obs. +- std.dev) % change (higher-better) Note
search-numeric-sortby-optimize 29 +- 5.8% (7 datapoints) 33 12.4% IMPROVEMENT
search-ftsb-10K-enwiki_abstract-hashes-term-withoutsuffix-trie 49752 +- 3.9% (7 datapoints) 54028 8.6% IMPROVEMENT

Performance Regressions and Issues - Comparison between master and guyav-fix_hasMap_performance.

Time Period from 30 days ago. (environment used: oss-standalone)

Test Case Baseline master (median obs. +- std.dev) Comparison guyav-fix_hasMap_performance (median obs. +- std.dev) % change (higher-better) Note
search-filtering-tag-numeric 302 +- 21.7% UNSTABLE (7 datapoints) 232 -23.3% UNSTABLE (baseline high variance); server: FT.AGGREGATE p50 increased 30.3% (baseline CV=19.5%); client: Latency increased 30.3% (baseline CV=19.6%)
ftsb-1M-enwiki_abstract-hashes-fulltext-2word-union-query-non-sortable 1244 +- 13.6% UNSTABLE (7 datapoints) 1109 -10.8% UNSTABLE (baseline high variance); server: FT.SEARCH p50 increased 5.2% (baseline CV=4.7%); client: OverallQuantiles.allCommands.q50 increased 10.6% (baseline CV=13.1%); only client side confirms regression (server side stable) - insufficient evidence
ftsb-1M-enwiki_abstract-hashes-fulltext-2word-intersection-query-non-sortable 34 +- 32.1% UNSTABLE (7 datapoints) 30 -10.0% UNSTABLE (baseline high variance); server: FT.SEARCH p50 decreased 9.4% (baseline CV=14.1%); client: client latency stable; neither server nor client side confirms regression
ftsb-1M-enwiki_abstract-hashes-fulltext-2word-intersection-query 310 +- 16.0% UNSTABLE (7 datapoints) 280 -9.6% UNSTABLE (baseline high variance); server: p50 latency stable; client: OverallQuantiles.allCommands.q50 increased 15.4% (baseline CV=14.1%); only client side confirms regression (server side stable) - insufficient evidence
search-numeric-sortby-desc 3663 +- 30.7% UNSTABLE (7 datapoints) 3347 -8.6% UNSTABLE (baseline high variance); server: FT.SEARCH p50 increased 10.1% (baseline CV=25.8%); client: Latency increased 9.4% (baseline CV=25.1%); only server side confirms regression (client side stable) - insufficient evidence
search-numeric-sortby 5385 +- 21.2% UNSTABLE (7 datapoints) 5565 3.3% UNSTABLE (baseline high variance); server: p50 latency stable; client: client latency stable; neither server nor client side confirms regression
ftsb-1M-enwiki_abstract-hashes-fulltext-2word-union-query 3068 +- 11.6% UNSTABLE (7 datapoints) 3219 4.9% UNSTABLE (baseline high variance); server: p50 latency stable; client: client latency stable; neither server nor client side confirms regression
ftsb-1M-enwiki_abstract-hashes-fulltext-simple-1word-query 806 +- 26.3% UNSTABLE (7 datapoints) 953 18.3% UNSTABLE (baseline high variance); server: FT.SEARCH p50 decreased 17.4% (baseline CV=27.6%); client: OverallQuantiles.allCommands.q50 decreased 15.6% (baseline CV=23.9%); neither server nor client side confirms regression
search-numeric 3513 +- 35.2% UNSTABLE (7 datapoints) 5841 66.3% UNSTABLE (baseline high variance); server: FT.SEARCH p50 decreased 41.1% (baseline CV=27.4%); client: Latency decreased 39.9% (baseline CV=26.8%); neither server nor client side confirms regression
Tests with No Significant Changes (29 tests)

Tests with No Significant Changes

Test Case Baseline master (median obs. +- std.dev) Comparison guyav-fix_hasMap_performance (median obs. +- std.dev) % change (higher-better) Note
ftsb-10K-enwiki_abstract-hashes-fulltext-sortby 85 +- 6.4% (7 datapoints) 88.00 4.2% potential IMPROVEMENT
ftsb-10K-enwiki_abstract-hashes-term-prefix 8236 +- 9.9% (7 datapoints) 8874.00 7.7% waterline=9.9%. potential IMPROVEMENT
ftsb-10K-enwiki_abstract-hashes-term-suffix 2770 +- 0.6% (7 datapoints) 2753.00 -0.6% No Change
ftsb-10K-enwiki_abstract-hashes-term-suffix-withsuffixtrie 82788 +- 3.0% (7 datapoints) 84354.00 1.9% No Change
ftsb-10K-enwiki_abstract-hashes-term-wildcard 16165 +- 9.1% (7 datapoints) 15728.00 -2.7% waterline=9.1%. No Change
ftsb-10K-enwiki_pages-hashes-fulltext-mixed_simple-1word-query_write_1_to_read_20.yml 1066 +- 6.5% (7 datapoints) 1068.00 0.2% No Change
ftsb-10K-enwiki_pages-hashes-load 64626 +- 7.1% (7 datapoints) 63695.00 -1.4% No Change
ftsb-10K-multivalue-numeric-json 1034 +- 2.0% (7 datapoints) 1037.00 0.3% No Change
ftsb-10K-singlevalue-numeric-json 426 +- 1.2% (7 datapoints) 420.00 -1.4% No Change
ftsb-1K-enwiki_abstract-hashes-term-contains 2326 +- 1.0% (7 datapoints) 2314.00 -0.5% No Change
ftsb-1M-enwiki_abstract-hashes-load 24001 +- 6.5% (7 datapoints) 23089.00 -3.8% potential REGRESSION
ftsb-1M-nyc_taxis-ftadd-load 29970 +- 2.5% (7 datapoints) 29000.00 -3.2% potential REGRESSION
ftsb-1M-nyc_taxis-hashes-load 33289 +- 3.4% (7 datapoints) 33957.00 2.0% No Change
search-aggregate-post-filter-simple.yml 131188 +- 6.1% (7 datapoints) 121719.00 -7.2% potential REGRESSION
search-filtering-tag-numeric-filter-pipeline 25625 +- 1.8% (7 datapoints) 25756.00 0.5% No Change
search-ftsb-10K-enwiki_abstract-hashes-term-withsuffix-trie 51971 +- 3.0% (7 datapoints) 52999.00 2.0% No Change
search-ftsb-1700K-docs-union-iterators-q3 9.2 +- 1.8% (7 datapoints) 9.20 0.5% No Change
search-ftsb-1M-enwiki_abstract-hashes-fulltext-simple-1word-query-non-sortable 156 +- 9.9% (7 datapoints) 162.00 3.9% waterline=9.9%. potential IMPROVEMENT
search-ftsb-370K-docs-union-iterators-q4 9.4 +- 1.3% (7 datapoints) 9.50 1.1% No Change
search-ftsb-5200K-docs-union-iterators-q1 0.93 +- 1.0% (7 datapoints) 0.95 2.2% No Change
search-ftsb-5500K-docs-union-iterators-q2 1.3 +- 1.8% (7 datapoints) 1.30 -0.8% No Change
search-geo 202 +- 3.2% (7 datapoints) 195.00 -3.6% potential REGRESSION
search-high-cardinality-negation-term-baseline 31 +- 4.2% (7 datapoints) 31.00 -2.6% No Change
search-high-cardinality-negation-term-comparison_union_all_other_terms 9.8 +- 3.1% (7 datapoints) 9.80 -0.1% No Change
search-numeric-optimize 14366 +- 1.9% (7 datapoints) 14697.00 2.3% No Change
search-numeric-sortby-desc-optimize 34 +- 8.9% (7 datapoints) 32.00 -8.0% waterline=8.9%. potential REGRESSION
vecsim-arxiv-titles-384-angular-filters-m16-ef-128-fulltext-filter 634 +- 7.0% (7 datapoints) 649.00 2.4% No Change
vecsim-arxiv-titles-384-angular-filters-m16-ef-128-numeric-filter 178 +- 9.7% (7 datapoints) 171.00 -4.2% waterline=9.7%. potential REGRESSION
vecsim-arxiv-titles-384-angular-filters-m16-ef-128-tag-filter 80618 +- 3.8% (7 datapoints) 75175.00 -6.8% potential REGRESSION

@codecov
Copy link

codecov bot commented Aug 13, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 87.42%. Comparing base (870e099) to head (e3082eb).
⚠️ Report is 2 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #6636      +/-   ##
==========================================
- Coverage   87.45%   87.42%   -0.04%     
==========================================
  Files         282      282              
  Lines       44844    44844              
  Branches     7747     7747              
==========================================
- Hits        39219    39204      -15     
- Misses       5507     5522      +15     
  Partials      118      118              
Flag Coverage Δ
flow 84.46% <100.00%> (-0.16%) ⬇️
unit 49.24% <0.00%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@RediSearch RediSearch deleted a comment from fcostaoliveira Aug 13, 2025
@GuyAv46 GuyAv46 added this pull request to the merge queue Aug 13, 2025
Merged via the queue into master with commit 8bb985d Aug 13, 2025
54 of 60 checks passed
@GuyAv46 GuyAv46 deleted the guyav-fix_hasMap_performance branch August 13, 2025 13:34
@redisearch-backport-pull-request
Copy link
Contributor

Successfully created backport PR for 2.8:

@redisearch-backport-pull-request
Copy link
Contributor

Successfully created backport PR for 2.10:

@redisearch-backport-pull-request
Copy link
Contributor

Successfully created backport PR for 8.2:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants