Skip to content

core/object: add benchmarks for MergeSearchResults#3932

Merged
roman-khimov merged 1 commit intomasterfrom
bench-search-result-merger
Apr 10, 2026
Merged

core/object: add benchmarks for MergeSearchResults#3932
roman-khimov merged 1 commit intomasterfrom
bench-search-result-merger

Conversation

@End-rey
Copy link
Copy Markdown
Contributor

@End-rey End-rey commented Apr 8, 2026

Refs #3133.

As far as I can see, benchmarks show that the main cost comes from numeric attribute comparison cmpInt and from large merges with low overlap between result sets.

@codecov
Copy link
Copy Markdown

codecov bot commented Apr 8, 2026

Codecov Report

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

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #3932   +/-   ##
=======================================
  Coverage   26.81%   26.82%           
=======================================
  Files         677      677           
  Lines       44723    44723           
=======================================
+ Hits        11992    11995    +3     
+ Misses      31617    31614    -3     
  Partials     1114     1114           

☔ 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.

Copy link
Copy Markdown
Member

@roman-khimov roman-khimov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But cases look realistic overall.

func BenchmarkMergeSearchResults(b *testing.B) {
for _, lim := range []uint16{1, 2, 1000, 10000} {
b.Run(fmt.Sprintf("lim_%d", lim), func(b *testing.B) {
for _, setCount := range []int{4, 16} {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 is a a good number for shards in our current tests. 8 is a good number of nodes.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left 2 and 8 then.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We better keep 4 and 16 as well, this thing should scale predictably, 10-20 shards or nodes are feasible even if we don't have them immediately (but we had 20 shards in one test, btw).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

@roman-khimov
Copy link
Copy Markdown
Member

Can we also have a limit of 1K, but just a single real result? This looks realistic for S3 as well (most of the time it doesn't specifically limit the number of results, but then we don't have many cat.png results, a single from shard and some number from nodes (3 for REP, 8 for EC)).

@End-rey End-rey force-pushed the bench-search-result-merger branch 3 times, most recently from 7d474f4 to aaee7fc Compare April 9, 2026 15:43
Copy link
Copy Markdown
Member

@roman-khimov roman-khimov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK otherwise. And the numbers suggest that it's not that bad even now, just integer handling that is clearly problematic. But other improvements can be useful too.

@roman-khimov
Copy link
Copy Markdown
Member

For integers https://github.com/holiman/uint256 is likely to help, math.Big is more generic, but less effective.

@End-rey End-rey force-pushed the bench-search-result-merger branch from aaee7fc to f1e4534 Compare April 10, 2026 08:02
```
goos: linux
goarch: amd64
pkg: github.com/nspcc-dev/neofs-node/pkg/core/object
cpu: AMD Ryzen 7 PRO 4750U with Radeon Graphics
BenchmarkMergeSearchResults
BenchmarkMergeSearchResults/lim_1
BenchmarkMergeSearchResults/lim_1/set_count_2
BenchmarkMergeSearchResults/lim_1/set_count_2/id_identical
BenchmarkMergeSearchResults/lim_1/set_count_2/id_identical-16         	 1000000	      1410 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_2/id_disjoint
BenchmarkMergeSearchResults/lim_1/set_count_2/id_disjoint-16          	  787754	      1564 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_2/id_intersecting
BenchmarkMergeSearchResults/lim_1/set_count_2/id_intersecting-16      	  770305	      1478 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_2/size_numeric
BenchmarkMergeSearchResults/lim_1/set_count_2/size_numeric-16         	  901287	      2562 ns/op	     200 B/op	       7 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_2/common_prefix_dense
BenchmarkMergeSearchResults/lim_1/set_count_2/common_prefix_dense-16  	 1233517	       956.6 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_2/common_prefix_single_result
BenchmarkMergeSearchResults/lim_1/set_count_2/common_prefix_single_result-16         	  851367	      1398 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_2/filepath_timestamp_dense
BenchmarkMergeSearchResults/lim_1/set_count_2/filepath_timestamp_dense-16            	  802920	      1485 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_2/integer_attribute_dense
BenchmarkMergeSearchResults/lim_1/set_count_2/integer_attribute_dense-16             	  674882	      1790 ns/op	     120 B/op	       3 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_4
BenchmarkMergeSearchResults/lim_1/set_count_4/id_identical
BenchmarkMergeSearchResults/lim_1/set_count_4/id_identical-16                        	 1000000	      1393 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_4/id_disjoint
BenchmarkMergeSearchResults/lim_1/set_count_4/id_disjoint-16                         	 1000000	      1460 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_4/id_intersecting
BenchmarkMergeSearchResults/lim_1/set_count_4/id_intersecting-16                     	 1000000	      1486 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_4/size_numeric
BenchmarkMergeSearchResults/lim_1/set_count_4/size_numeric-16                        	  380428	      3175 ns/op	     272 B/op	      10 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_4/common_prefix_dense
BenchmarkMergeSearchResults/lim_1/set_count_4/common_prefix_dense-16                 	 1312003	       892.0 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_4/common_prefix_single_result
BenchmarkMergeSearchResults/lim_1/set_count_4/common_prefix_single_result-16         	  969753	      1317 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_4/filepath_timestamp_dense
BenchmarkMergeSearchResults/lim_1/set_count_4/filepath_timestamp_dense-16            	 1035876	      1119 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_4/integer_attribute_dense
BenchmarkMergeSearchResults/lim_1/set_count_4/integer_attribute_dense-16             	  794206	      1521 ns/op	     120 B/op	       3 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_8
BenchmarkMergeSearchResults/lim_1/set_count_8/id_identical
BenchmarkMergeSearchResults/lim_1/set_count_8/id_identical-16                        	  744229	      1560 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_8/id_disjoint
BenchmarkMergeSearchResults/lim_1/set_count_8/id_disjoint-16                         	  927214	      1268 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_8/id_intersecting
BenchmarkMergeSearchResults/lim_1/set_count_8/id_intersecting-16                     	 1000000	      1196 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_8/size_numeric
BenchmarkMergeSearchResults/lim_1/set_count_8/size_numeric-16                        	  346908	      3432 ns/op	     400 B/op	      14 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_8/common_prefix_dense
BenchmarkMergeSearchResults/lim_1/set_count_8/common_prefix_dense-16                 	 1118973	      1011 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_8/common_prefix_single_result
BenchmarkMergeSearchResults/lim_1/set_count_8/common_prefix_single_result-16         	  887355	      1320 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_8/filepath_timestamp_dense
BenchmarkMergeSearchResults/lim_1/set_count_8/filepath_timestamp_dense-16            	 1000000	      1086 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_8/integer_attribute_dense
BenchmarkMergeSearchResults/lim_1/set_count_8/integer_attribute_dense-16             	  759685	      1580 ns/op	     120 B/op	       3 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_16
BenchmarkMergeSearchResults/lim_1/set_count_16/id_identical
BenchmarkMergeSearchResults/lim_1/set_count_16/id_identical-16                       	  949563	      1537 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_16/id_disjoint
BenchmarkMergeSearchResults/lim_1/set_count_16/id_disjoint-16                        	 1053872	      1133 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_16/id_intersecting
BenchmarkMergeSearchResults/lim_1/set_count_16/id_intersecting-16                    	 1042620	      1151 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_16/size_numeric
BenchmarkMergeSearchResults/lim_1/set_count_16/size_numeric-16                       	  266541	      4416 ns/op	     656 B/op	      22 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_16/common_prefix_dense
BenchmarkMergeSearchResults/lim_1/set_count_16/common_prefix_dense-16                	 1133349	      1008 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_16/common_prefix_single_result
BenchmarkMergeSearchResults/lim_1/set_count_16/common_prefix_single_result-16        	  829562	      1395 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_16/filepath_timestamp_dense
BenchmarkMergeSearchResults/lim_1/set_count_16/filepath_timestamp_dense-16           	  985033	      1181 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1/set_count_16/integer_attribute_dense
BenchmarkMergeSearchResults/lim_1/set_count_16/integer_attribute_dense-16            	  739009	      1648 ns/op	     120 B/op	       3 allocs/op
BenchmarkMergeSearchResults/lim_2
BenchmarkMergeSearchResults/lim_2/set_count_2
BenchmarkMergeSearchResults/lim_2/set_count_2/id_identical
BenchmarkMergeSearchResults/lim_2/set_count_2/id_identical-16                        	  836520	      1404 ns/op	     136 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_2/id_disjoint
BenchmarkMergeSearchResults/lim_2/set_count_2/id_disjoint-16                         	   18962	     64180 ns/op	     136 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_2/id_intersecting
BenchmarkMergeSearchResults/lim_2/set_count_2/id_intersecting-16                     	   18808	     64479 ns/op	     136 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_2/size_numeric
BenchmarkMergeSearchResults/lim_2/set_count_2/size_numeric-16                        	   20179	     58533 ns/op	     280 B/op	       8 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_2/common_prefix_dense
BenchmarkMergeSearchResults/lim_2/set_count_2/common_prefix_dense-16                 	  868041	      1361 ns/op	     136 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_2/common_prefix_single_result
BenchmarkMergeSearchResults/lim_2/set_count_2/common_prefix_single_result-16         	  802594	      1506 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_2/filepath_timestamp_dense
BenchmarkMergeSearchResults/lim_2/set_count_2/filepath_timestamp_dense-16            	 1000000	      1565 ns/op	     136 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_2/integer_attribute_dense
BenchmarkMergeSearchResults/lim_2/set_count_2/integer_attribute_dense-16             	  509468	      2458 ns/op	     208 B/op	       5 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_4
BenchmarkMergeSearchResults/lim_2/set_count_4/id_identical
BenchmarkMergeSearchResults/lim_2/set_count_4/id_identical-16                        	  531987	      2002 ns/op	     136 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_4/id_disjoint
BenchmarkMergeSearchResults/lim_2/set_count_4/id_disjoint-16                         	    6474	    182328 ns/op	     136 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_4/id_intersecting
BenchmarkMergeSearchResults/lim_2/set_count_4/id_intersecting-16                     	    6058	    194420 ns/op	     136 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_4/size_numeric
BenchmarkMergeSearchResults/lim_2/set_count_4/size_numeric-16                        	    6559	    183058 ns/op	     416 B/op	      13 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_4/common_prefix_dense
BenchmarkMergeSearchResults/lim_2/set_count_4/common_prefix_dense-16                 	    9938	    119992 ns/op	     136 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_4/common_prefix_single_result
BenchmarkMergeSearchResults/lim_2/set_count_4/common_prefix_single_result-16         	  922062	      1354 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_4/filepath_timestamp_dense
BenchmarkMergeSearchResults/lim_2/set_count_4/filepath_timestamp_dense-16            	  861144	      1379 ns/op	     136 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_4/integer_attribute_dense
BenchmarkMergeSearchResults/lim_2/set_count_4/integer_attribute_dense-16             	  516873	      2109 ns/op	     208 B/op	       5 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_8
BenchmarkMergeSearchResults/lim_2/set_count_8/id_identical
BenchmarkMergeSearchResults/lim_2/set_count_8/id_identical-16                        	  651402	      1785 ns/op	     136 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_8/id_disjoint
BenchmarkMergeSearchResults/lim_2/set_count_8/id_disjoint-16                         	    2347	    497598 ns/op	     136 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_8/id_intersecting
BenchmarkMergeSearchResults/lim_2/set_count_8/id_intersecting-16                     	    2376	    494005 ns/op	     136 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_8/size_numeric
BenchmarkMergeSearchResults/lim_2/set_count_8/size_numeric-16                        	    2478	    473502 ns/op	     672 B/op	      21 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_8/common_prefix_dense
BenchmarkMergeSearchResults/lim_2/set_count_8/common_prefix_dense-16                 	   10000	    127255 ns/op	     136 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_8/common_prefix_single_result
BenchmarkMergeSearchResults/lim_2/set_count_8/common_prefix_single_result-16         	  673596	      1494 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_8/filepath_timestamp_dense
BenchmarkMergeSearchResults/lim_2/set_count_8/filepath_timestamp_dense-16            	  832546	      1453 ns/op	     136 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_8/integer_attribute_dense
BenchmarkMergeSearchResults/lim_2/set_count_8/integer_attribute_dense-16             	  472557	      2254 ns/op	     208 B/op	       5 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_16
BenchmarkMergeSearchResults/lim_2/set_count_16/id_identical
BenchmarkMergeSearchResults/lim_2/set_count_16/id_identical-16                       	  562095	      2061 ns/op	     136 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_16/id_disjoint
BenchmarkMergeSearchResults/lim_2/set_count_16/id_disjoint-16                        	     952	   1085589 ns/op	     136 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_16/id_intersecting
BenchmarkMergeSearchResults/lim_2/set_count_16/id_intersecting-16                    	    1122	   1061779 ns/op	     136 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_16/size_numeric
BenchmarkMergeSearchResults/lim_2/set_count_16/size_numeric-16                       	    1123	   1065970 ns/op	    1184 B/op	      37 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_16/common_prefix_dense
BenchmarkMergeSearchResults/lim_2/set_count_16/common_prefix_dense-16                	    9967	    119192 ns/op	     136 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_16/common_prefix_single_result
BenchmarkMergeSearchResults/lim_2/set_count_16/common_prefix_single_result-16        	  829124	      1496 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_16/filepath_timestamp_dense
BenchmarkMergeSearchResults/lim_2/set_count_16/filepath_timestamp_dense-16           	  729151	      1605 ns/op	     136 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_2/set_count_16/integer_attribute_dense
BenchmarkMergeSearchResults/lim_2/set_count_16/integer_attribute_dense-16            	  437875	      2444 ns/op	     208 B/op	       5 allocs/op
BenchmarkMergeSearchResults/lim_1000
BenchmarkMergeSearchResults/lim_1000/set_count_2
BenchmarkMergeSearchResults/lim_1000/set_count_2/id_identical
BenchmarkMergeSearchResults/lim_1000/set_count_2/id_identical-16                     	   17630	     69803 ns/op	   57368 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_2/id_disjoint
BenchmarkMergeSearchResults/lim_1000/set_count_2/id_disjoint-16                      	      18	  64270422 ns/op	   57368 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_2/id_intersecting
BenchmarkMergeSearchResults/lim_1000/set_count_2/id_intersecting-16                  	      20	  58285883 ns/op	   57368 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_2/size_numeric
BenchmarkMergeSearchResults/lim_1000/set_count_2/size_numeric-16                     	    2730	    472835 ns/op	   89449 B/op	    1006 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_2/common_prefix_dense
BenchmarkMergeSearchResults/lim_1000/set_count_2/common_prefix_dense-16              	   22330	     56341 ns/op	   57368 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_2/common_prefix_single_result
BenchmarkMergeSearchResults/lim_1000/set_count_2/common_prefix_single_result-16      	  865824	      1317 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_2/filepath_timestamp_dense
BenchmarkMergeSearchResults/lim_1000/set_count_2/filepath_timestamp_dense-16         	   13861	     86097 ns/op	   57368 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_2/integer_attribute_dense
BenchmarkMergeSearchResults/lim_1000/set_count_2/integer_attribute_dense-16          	    3542	    352973 ns/op	   89376 B/op	    1003 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_4
BenchmarkMergeSearchResults/lim_1000/set_count_4/id_identical
BenchmarkMergeSearchResults/lim_1000/set_count_4/id_identical-16                     	    9464	    109007 ns/op	   57368 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_4/id_disjoint
BenchmarkMergeSearchResults/lim_1000/set_count_4/id_disjoint-16                      	       6	 183065412 ns/op	   57368 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_4/id_intersecting
BenchmarkMergeSearchResults/lim_1000/set_count_4/id_intersecting-16                  	       6	 191643990 ns/op	   57368 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_4/size_numeric
BenchmarkMergeSearchResults/lim_1000/set_count_4/size_numeric-16                     	      21	  53876843 ns/op	  205160 B/op	    5210 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_4/common_prefix_dense
BenchmarkMergeSearchResults/lim_1000/set_count_4/common_prefix_dense-16              	    3589	    362506 ns/op	   57368 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_4/common_prefix_single_result
BenchmarkMergeSearchResults/lim_1000/set_count_4/common_prefix_single_result-16      	 1000000	      1356 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_4/filepath_timestamp_dense
BenchmarkMergeSearchResults/lim_1000/set_count_4/filepath_timestamp_dense-16         	    9034	    132580 ns/op	   57368 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_4/integer_attribute_dense
BenchmarkMergeSearchResults/lim_1000/set_count_4/integer_attribute_dense-16          	    3356	    399321 ns/op	   89376 B/op	    1003 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_8
BenchmarkMergeSearchResults/lim_1000/set_count_8/id_identical
BenchmarkMergeSearchResults/lim_1000/set_count_8/id_identical-16                     	    5533	    190196 ns/op	   57368 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_8/id_disjoint
BenchmarkMergeSearchResults/lim_1000/set_count_8/id_disjoint-16                      	       3	 487491294 ns/op	   57368 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_8/id_intersecting
BenchmarkMergeSearchResults/lim_1000/set_count_8/id_intersecting-16                  	       2	 537942499 ns/op	   57368 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_8/size_numeric
BenchmarkMergeSearchResults/lim_1000/set_count_8/size_numeric-16                     	       8	 127800981 ns/op	  343090 B/op	    9521 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_8/common_prefix_dense
BenchmarkMergeSearchResults/lim_1000/set_count_8/common_prefix_dense-16              	    3655	    415401 ns/op	   57368 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_8/common_prefix_single_result
BenchmarkMergeSearchResults/lim_1000/set_count_8/common_prefix_single_result-16      	 1000000	      1438 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_8/filepath_timestamp_dense
BenchmarkMergeSearchResults/lim_1000/set_count_8/filepath_timestamp_dense-16         	    4933	    212615 ns/op	   57368 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_8/integer_attribute_dense
BenchmarkMergeSearchResults/lim_1000/set_count_8/integer_attribute_dense-16          	    2496	    494815 ns/op	   89376 B/op	    1003 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_16
BenchmarkMergeSearchResults/lim_1000/set_count_16/id_identical
BenchmarkMergeSearchResults/lim_1000/set_count_16/id_identical-16                    	    3411	    357944 ns/op	   57368 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_16/id_disjoint
BenchmarkMergeSearchResults/lim_1000/set_count_16/id_disjoint-16                     	       1	1087502977 ns/op	   57368 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_16/id_intersecting
BenchmarkMergeSearchResults/lim_1000/set_count_16/id_intersecting-16                 	       1	1081475137 ns/op	   57368 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_16/size_numeric
BenchmarkMergeSearchResults/lim_1000/set_count_16/size_numeric-16                    	       5	 201525858 ns/op	  597105 B/op	   17459 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_16/common_prefix_dense
BenchmarkMergeSearchResults/lim_1000/set_count_16/common_prefix_dense-16             	    2611	    510728 ns/op	   57368 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_16/common_prefix_single_result
BenchmarkMergeSearchResults/lim_1000/set_count_16/common_prefix_single_result-16     	  781710	      1503 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_16/filepath_timestamp_dense
BenchmarkMergeSearchResults/lim_1000/set_count_16/filepath_timestamp_dense-16        	    3241	    360179 ns/op	   57368 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_1000/set_count_16/integer_attribute_dense
BenchmarkMergeSearchResults/lim_1000/set_count_16/integer_attribute_dense-16         	    1988	    621284 ns/op	   89376 B/op	    1003 allocs/op
BenchmarkMergeSearchResults/lim_10000
BenchmarkMergeSearchResults/lim_10000/set_count_2
BenchmarkMergeSearchResults/lim_10000/set_count_2/id_identical
BenchmarkMergeSearchResults/lim_10000/set_count_2/id_identical-16                    	    1375	    843447 ns/op	  565272 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_2/id_disjoint
BenchmarkMergeSearchResults/lim_10000/set_count_2/id_disjoint-16                     	       2	 593716683 ns/op	  565272 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_2/id_intersecting
BenchmarkMergeSearchResults/lim_10000/set_count_2/id_intersecting-16                 	       2	 560890348 ns/op	  565272 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_2/size_numeric
BenchmarkMergeSearchResults/lim_10000/set_count_2/size_numeric-16                    	     376	   3343801 ns/op	  885359 B/op	   10006 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_2/common_prefix_dense
BenchmarkMergeSearchResults/lim_10000/set_count_2/common_prefix_dense-16             	    1843	    550350 ns/op	  565275 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_2/common_prefix_single_result
BenchmarkMergeSearchResults/lim_10000/set_count_2/common_prefix_single_result-16     	 1000000	      1299 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_2/filepath_timestamp_dense
BenchmarkMergeSearchResults/lim_10000/set_count_2/filepath_timestamp_dense-16        	    1112	    998212 ns/op	  565273 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_2/integer_attribute_dense
BenchmarkMergeSearchResults/lim_10000/set_count_2/integer_attribute_dense-16         	     304	   3851772 ns/op	  886571 B/op	   10044 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_4
BenchmarkMergeSearchResults/lim_10000/set_count_4/id_identical
BenchmarkMergeSearchResults/lim_10000/set_count_4/id_identical-16                    	     909	   1302018 ns/op	  565272 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_4/id_disjoint
BenchmarkMergeSearchResults/lim_10000/set_count_4/id_disjoint-16                     	       1	1822682866 ns/op	  565272 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_4/id_intersecting
BenchmarkMergeSearchResults/lim_10000/set_count_4/id_intersecting-16                 	       1	1827583757 ns/op	  565272 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_4/size_numeric
BenchmarkMergeSearchResults/lim_10000/set_count_4/size_numeric-16                    	       8	 139558138 ns/op	 1143500 B/op	   18883 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_4/common_prefix_dense
BenchmarkMergeSearchResults/lim_10000/set_count_4/common_prefix_dense-16             	     741	   1401006 ns/op	  565272 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_4/common_prefix_single_result
BenchmarkMergeSearchResults/lim_10000/set_count_4/common_prefix_single_result-16     	  990964	      1388 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_4/filepath_timestamp_dense
BenchmarkMergeSearchResults/lim_10000/set_count_4/filepath_timestamp_dense-16        	     726	   1524613 ns/op	  565272 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_4/integer_attribute_dense
BenchmarkMergeSearchResults/lim_10000/set_count_4/integer_attribute_dense-16         	     283	   4157128 ns/op	  887211 B/op	   10064 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_8
BenchmarkMergeSearchResults/lim_10000/set_count_8/id_identical
BenchmarkMergeSearchResults/lim_10000/set_count_8/id_identical-16                    	     574	   1984919 ns/op	  565272 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_8/id_disjoint
BenchmarkMergeSearchResults/lim_10000/set_count_8/id_disjoint-16                     	       1	4756347663 ns/op	  565272 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_8/id_intersecting
BenchmarkMergeSearchResults/lim_10000/set_count_8/id_intersecting-16                 	       1	4326771470 ns/op	  565272 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_8/size_numeric
BenchmarkMergeSearchResults/lim_10000/set_count_8/size_numeric-16                    	       3	 495266613 ns/op	 2140728 B/op	   51307 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_8/common_prefix_dense
BenchmarkMergeSearchResults/lim_10000/set_count_8/common_prefix_dense-16             	     613	   1899362 ns/op	  565272 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_8/common_prefix_single_result
BenchmarkMergeSearchResults/lim_10000/set_count_8/common_prefix_single_result-16     	 1000000	      1436 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_8/filepath_timestamp_dense
BenchmarkMergeSearchResults/lim_10000/set_count_8/filepath_timestamp_dense-16        	     472	   2526938 ns/op	  565272 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_8/integer_attribute_dense
BenchmarkMergeSearchResults/lim_10000/set_count_8/integer_attribute_dense-16         	     246	   4748538 ns/op	  887211 B/op	   10064 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_16
BenchmarkMergeSearchResults/lim_10000/set_count_16/id_identical
BenchmarkMergeSearchResults/lim_10000/set_count_16/id_identical-16                   	     315	   3723042 ns/op	  565272 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_16/id_disjoint
BenchmarkMergeSearchResults/lim_10000/set_count_16/id_disjoint-16                    	       1	10677561676 ns/op	  565272 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_16/id_intersecting
BenchmarkMergeSearchResults/lim_10000/set_count_16/id_intersecting-16                	       1	10469975000 ns/op	  565272 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_16/size_numeric
BenchmarkMergeSearchResults/lim_10000/set_count_16/size_numeric-16                   	       1	1234516218 ns/op	 5827832 B/op	  169913 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_16/common_prefix_dense
BenchmarkMergeSearchResults/lim_10000/set_count_16/common_prefix_dense-16            	     444	   2798186 ns/op	  565272 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_16/common_prefix_single_result
BenchmarkMergeSearchResults/lim_10000/set_count_16/common_prefix_single_result-16    	  753970	      1559 ns/op	      88 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_16/filepath_timestamp_dense
BenchmarkMergeSearchResults/lim_10000/set_count_16/filepath_timestamp_dense-16       	     310	   3928992 ns/op	  565273 B/op	       2 allocs/op
BenchmarkMergeSearchResults/lim_10000/set_count_16/integer_attribute_dense
BenchmarkMergeSearchResults/lim_10000/set_count_16/integer_attribute_dense-16        	     181	   6398928 ns/op	  887213 B/op	   10064 allocs/op
PASS
```

Refs #3133.

Signed-off-by: Andrey Butusov <andrey@nspcc.io>
@roman-khimov roman-khimov merged commit b5d6d30 into master Apr 10, 2026
21 of 22 checks passed
@roman-khimov roman-khimov deleted the bench-search-result-merger branch April 10, 2026 09:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants