tisonkun commented on PR #325: URL: https://github.com/apache/datasketches-rust/pull/325#issuecomment-6645452268
## Focused XOR benchmark results This refactor keeps construction and query performance near the preceding revision; it does not claim a new broad speedup. The matrix now covers **45 scenarios / 93 implementation rows per profile**, replacing the forced-retry and adjacent-cardinality cases with representative build sizes. Deduplicating comparisons include the same collect/sort/deduplicate work on both sides and use repeated values. Counts below mean **lower / equal / higher elapsed-time medians versus xorf**. They are not statistical wins or an aggregate score. | Workload | Ordinary bench | Fat LTO, one codegen unit | | -------------------------- | -------------- | ------------------------- | | Distinct builds | 6 / 0 / 3 | 6 / 0 / 3 | | Deduplicating builds | 9 / 0 / 0 | 9 / 0 / 0 | | Independent-filter batches | 6 / 0 / 0 | 6 / 0 / 0 | | Single-filter queries | 11 / 1 / 0 | 10 / 0 / 2 | | Imported-filter queries | 12 / 0 / 0 | 7 / 0 / 5 | The default-seed 16K distinct builds still need an extra attempt and remain slower. LTO also has seven query medians 1.0%–2.2% above xorf; six of those seven sample ranges overlap. Exact remaining gaps are listed below alongside all results. The changed build definitions establish a new baseline: improvements relative to xorf in the deduplicating rows must not be interpreted as before/after speedups caused by the refactor. Both profiles use optimized Cargo bench builds with five repeats, fixed rounds, and setup/cleanup included. Apple M4 Max, macOS arm64, rustc 1.101.0-nightly (8006091eb, 2026-10-17), xorf 0.13.0. Measured production and benchmark code: `5cb4807`; `e200080` only simplifies a unit test. The [ScopeDB end-to-end report](https://github.com/scopedb/scopedb/pull/3647#issuecomment-6645387830) separately measures real ingestion and query paths with ThinLTO. <details> <summary>Reproduction and before/after checks</summary> `cargo x bench -- xor --repeat 5 --raw` `CARGO_PROFILE_BENCH_LTO=fat CARGO_PROFILE_BENCH_CODEGEN_UNITS=1 cargo x bench -- xor --repeat 5 --raw` Before/after checks used identical retained benchmark definitions on `541f87e` and this change, with three repetitions. Independent-filter batch medians changed from 265/149/173 ms to 267/148/170 ms for 128/16K/50K inputs. Single-filter build changes ranged from -2.7% to +2.2%, and query changes from -4.1% to +2.5%. These small mixed differences do not establish a new general performance improvement. </details> <details> <summary>Every remaining above-xorf median</summary> | Profile | Scenario | DS entry | DS ms | xorf ms | More elapsed time | Ranges overlap | | ------------------------- | ----------------------------------- | ------------ | ----- | ------- | ----------------- | -------------- | | Ordinary bench | xor::build::8_distinct/16384 | DataSketches | 361 | 279 | +29.4% | no | | Ordinary bench | xor::build::16_distinct/16384 | DataSketches | 361 | 280 | +28.9% | no | | Ordinary bench | xor::build::32_distinct/16384 | DataSketches | 366 | 284 | +28.9% | no | | Fat LTO, one codegen unit | xor::build::8_distinct/16384 | DataSketches | 357 | 279 | +28.0% | no | | Fat LTO, one codegen unit | xor::build::16_distinct/16384 | DataSketches | 365 | 288 | +26.7% | no | | Fat LTO, one codegen unit | xor::build::32_distinct/16384 | DataSketches | 366 | 284 | +28.9% | no | | Fat LTO, one codegen unit | xor::query::16_present/50000 | DataSketches | 238 | 235 | +1.3% | no | | Fat LTO, one codegen unit | xor::query::16_absent/50000 | DataSketches | 239 | 235 | +1.7% | yes | | Fat LTO, one codegen unit | xor::query_shards::8_absent/16384 | DataSketches | 358 | 351 | +2.0% | yes | | Fat LTO, one codegen unit | xor::query_shards::16_present/128 | DataSketches | 289 | 286 | +1.0% | yes | | Fat LTO, one codegen unit | xor::query_shards::16_present/16384 | DataSketches | 362 | 358 | +1.1% | yes | | Fat LTO, one codegen unit | xor::query_shards::16_absent/16384 | DataSketches | 370 | 364 | +1.6% | yes | | Fat LTO, one codegen unit | xor::query_shards::32_absent/16384 | DataSketches | 370 | 362 | +2.2% | yes | </details> <details> <summary>All measurements and raw samples (ms)</summary> Delta = (DataSketches median / xorf median − 1) × 100%; negative means less elapsed time. Each scenario keeps identical work and rounds across implementations. ### Ordinary bench | Scenario | Implementation | Rounds | Median | Min–max | Raw samples | Delta vs xorf | | ----------------------------------- | -------------- | ------ | ------ | ------- | ----------------------- | ------------- | | xor::build::8_distinct/1000 | DataSketches | 60000 | 305 | 302–322 | 322, 303, 302, 305, 305 | -33.4% | | xor::build::8_distinct/1000 | xorf | 60000 | 458 | 453–459 | 458, 459, 453, 456, 458 | reference | | xor::build::8_deduplicate/1000 | DataSketches | 60000 | 356 | 355–359 | 355, 359, 357, 356, 356 | -11.7% | | xor::build::8_deduplicate/1000 | xorf | 60000 | 403 | 400–411 | 400, 411, 401, 403, 403 | reference | | xor::build::16_distinct/1000 | DataSketches | 60000 | 300 | 299–301 | 300, 301, 301, 300, 299 | -35.5% | | xor::build::16_distinct/1000 | xorf | 60000 | 465 | 461–466 | 461, 465, 466, 466, 464 | reference | | xor::build::16_deduplicate/1000 | DataSketches | 60000 | 354 | 352–359 | 359, 354, 353, 357, 352 | -11.1% | | xor::build::16_deduplicate/1000 | xorf | 60000 | 398 | 395–406 | 396, 398, 395, 400, 406 | reference | | xor::build::32_distinct/1000 | DataSketches | 60000 | 308 | 308–311 | 311, 308, 309, 308, 308 | -34.6% | | xor::build::32_distinct/1000 | xorf | 60000 | 471 | 470–474 | 473, 474, 470, 471, 470 | reference | | xor::build::32_deduplicate/1000 | DataSketches | 60000 | 356 | 354–361 | 359, 356, 361, 356, 354 | -10.8% | | xor::build::32_deduplicate/1000 | xorf | 60000 | 399 | 398–402 | 402, 399, 400, 398, 398 | reference | | xor::build::8_distinct/16384 | DataSketches | 2000 | 361 | 359–363 | 359, 361, 361, 363, 360 | +29.4% | | xor::build::8_distinct/16384 | xorf | 2000 | 279 | 276–292 | 292, 276, 279, 277, 280 | reference | | xor::build::8_deduplicate/16384 | DataSketches | 2000 | 249 | 248–250 | 248, 248, 249, 250, 250 | -8.8% | | xor::build::8_deduplicate/16384 | xorf | 2000 | 273 | 271–274 | 273, 271, 274, 273, 273 | reference | | xor::build::16_distinct/16384 | DataSketches | 2000 | 361 | 359–364 | 359, 361, 362, 361, 364 | +28.9% | | xor::build::16_distinct/16384 | xorf | 2000 | 280 | 275–285 | 285, 277, 281, 275, 280 | reference | | xor::build::16_deduplicate/16384 | DataSketches | 2000 | 249 | 245–254 | 245, 254, 248, 249, 249 | -7.8% | | xor::build::16_deduplicate/16384 | xorf | 2000 | 270 | 269–270 | 270, 270, 269, 270, 270 | reference | | xor::build::32_distinct/16384 | DataSketches | 2000 | 366 | 364–377 | 364, 374, 366, 377, 365 | +28.9% | | xor::build::32_distinct/16384 | xorf | 2000 | 284 | 280–288 | 288, 283, 284, 280, 284 | reference | | xor::build::32_deduplicate/16384 | DataSketches | 2000 | 250 | 248–261 | 250, 261, 250, 248, 251 | -7.7% | | xor::build::32_deduplicate/16384 | xorf | 2000 | 271 | 270–273 | 270, 271, 272, 273, 271 | reference | | xor::build::8_distinct/1000000 | DataSketches | 12 | 159 | 154–161 | 161, 159, 159, 154, 154 | -41.3% | | xor::build::8_distinct/1000000 | xorf | 12 | 271 | 269–280 | 280, 273, 271, 269, 270 | reference | | xor::build::8_deduplicate/1000000 | DataSketches | 12 | 152 | 151–154 | 154, 151, 152, 152, 153 | -13.6% | | xor::build::8_deduplicate/1000000 | xorf | 12 | 176 | 174–180 | 174, 179, 175, 180, 176 | reference | | xor::build::16_distinct/1000000 | DataSketches | 12 | 158 | 156–163 | 163, 160, 158, 156, 156 | -42.5% | | xor::build::16_distinct/1000000 | xorf | 12 | 275 | 272–280 | 280, 275, 278, 274, 272 | reference | | xor::build::16_deduplicate/1000000 | DataSketches | 12 | 153 | 151–153 | 153, 152, 151, 153, 153 | -12.1% | | xor::build::16_deduplicate/1000000 | xorf | 12 | 174 | 173–175 | 174, 173, 173, 175, 174 | reference | | xor::build::32_distinct/1000000 | DataSketches | 12 | 159 | 157–163 | 163, 160, 159, 157, 157 | -41.5% | | xor::build::32_distinct/1000000 | xorf | 12 | 272 | 270–282 | 282, 272, 279, 271, 270 | reference | | xor::build::32_deduplicate/1000000 | DataSketches | 12 | 154 | 151–154 | 154, 151, 153, 154, 154 | -11.5% | | xor::build::32_deduplicate/1000000 | xorf | 12 | 174 | 173–180 | 173, 174, 173, 176, 180 | reference | | xor::build_batches::8/128 | default_seed | 10000 | 263 | 262–272 | 272, 262, 263, 262, 263 | -34.9% | | xor::build_batches::8/128 | matched_seed | 10000 | 272 | 270–274 | 274, 272, 271, 270, 273 | -32.7% | | xor::build_batches::8/128 | xorf | 10000 | 404 | 403–406 | 405, 403, 406, 404, 404 | reference | | xor::build_batches::8/16384 | default_seed | 40 | 151 | 151–153 | 152, 151, 153, 151, 151 | -58.1% | | xor::build_batches::8/16384 | matched_seed | 40 | 142 | 140–145 | 145, 142, 142, 140, 141 | -60.6% | | xor::build_batches::8/16384 | xorf | 40 | 360 | 359–361 | 360, 360, 361, 359, 361 | reference | | xor::build_batches::8/50000 | default_seed | 12 | 172 | 171–172 | 172, 172, 171, 172, 171 | -48.3% | | xor::build_batches::8/50000 | matched_seed | 12 | 167 | 167–170 | 167, 167, 167, 170, 167 | -49.8% | | xor::build_batches::8/50000 | xorf | 12 | 333 | 332–340 | 333, 340, 333, 335, 332 | reference | | xor::query::8_present/16384 | DataSketches | 10000 | 275 | 272–280 | 275, 273, 272, 280, 276 | -3.2% | | xor::query::8_present/16384 | xorf | 10000 | 284 | 282–286 | 282, 283, 285, 284, 286 | reference | | xor::query::8_present/50000 | DataSketches | 3000 | 247 | 245–248 | 247, 246, 245, 248, 247 | -3.9% | | xor::query::8_present/50000 | xorf | 3000 | 257 | 257–257 | 257, 257, 257, 257, 257 | reference | | xor::query::8_absent/16384 | DataSketches | 10000 | 267 | 265–269 | 267, 267, 269, 267, 265 | -7.0% | | xor::query::8_absent/16384 | xorf | 10000 | 287 | 283–290 | 286, 290, 287, 287, 283 | reference | | xor::query::8_absent/50000 | DataSketches | 3000 | 243 | 242–244 | 244, 242, 244, 243, 242 | -5.4% | | xor::query::8_absent/50000 | xorf | 3000 | 257 | 255–260 | 258, 255, 260, 257, 257 | reference | | xor::query::16_present/16384 | DataSketches | 10000 | 277 | 276–278 | 278, 276, 276, 277, 277 | -2.1% | | xor::query::16_present/16384 | xorf | 10000 | 283 | 282–288 | 283, 284, 282, 282, 288 | reference | | xor::query::16_present/50000 | DataSketches | 3000 | 267 | 267–270 | 267, 270, 267, 267, 267 | 0.0% | | xor::query::16_present/50000 | xorf | 3000 | 267 | 267–269 | 267, 267, 268, 267, 269 | reference | | xor::query::16_absent/16384 | DataSketches | 10000 | 273 | 271–275 | 271, 274, 275, 273, 273 | -3.9% | | xor::query::16_absent/16384 | xorf | 10000 | 284 | 283–290 | 284, 285, 290, 283, 284 | reference | | xor::query::16_absent/50000 | DataSketches | 3000 | 266 | 265–266 | 265, 266, 266, 266, 265 | -1.5% | | xor::query::16_absent/50000 | xorf | 3000 | 270 | 269–274 | 269, 272, 270, 270, 274 | reference | | xor::query::32_present/16384 | DataSketches | 10000 | 268 | 265–276 | 268, 276, 275, 268, 265 | -5.6% | | xor::query::32_present/16384 | xorf | 10000 | 284 | 283–290 | 285, 284, 283, 290, 284 | reference | | xor::query::32_present/50000 | DataSketches | 3000 | 280 | 279–281 | 280, 279, 279, 281, 281 | -8.5% | | xor::query::32_present/50000 | xorf | 3000 | 306 | 304–313 | 306, 306, 306, 313, 304 | reference | | xor::query::32_absent/16384 | DataSketches | 10000 | 273 | 267–275 | 267, 269, 275, 273, 273 | -8.4% | | xor::query::32_absent/16384 | xorf | 10000 | 298 | 287–305 | 287, 298, 292, 305, 298 | reference | | xor::query::32_absent/50000 | DataSketches | 3000 | 286 | 285–297 | 297, 286, 291, 285, 285 | -6.2% | | xor::query::32_absent/50000 | xorf | 3000 | 305 | 304–322 | 322, 305, 305, 304, 305 | reference | | xor::query_shards::8_present/128 | DataSketches | 20000 | 277 | 276–281 | 277, 277, 276, 278, 281 | -14.2% | | xor::query_shards::8_present/128 | xorf | 20000 | 323 | 322–327 | 327, 323, 322, 323, 325 | reference | | xor::query_shards::8_absent/128 | DataSketches | 20000 | 278 | 276–283 | 278, 278, 276, 277, 283 | -14.7% | | xor::query_shards::8_absent/128 | xorf | 20000 | 326 | 324–333 | 324, 333, 326, 326, 328 | reference | | xor::query_shards::8_present/16384 | DataSketches | 20000 | 354 | 349–355 | 355, 350, 354, 355, 349 | -15.7% | | xor::query_shards::8_present/16384 | xorf | 20000 | 420 | 416–423 | 418, 421, 420, 423, 416 | reference | | xor::query_shards::8_absent/16384 | DataSketches | 20000 | 348 | 347–355 | 352, 347, 355, 348, 348 | -17.5% | | xor::query_shards::8_absent/16384 | xorf | 20000 | 422 | 413–425 | 421, 413, 422, 425, 422 | reference | | xor::query_shards::16_present/128 | DataSketches | 20000 | 286 | 283–287 | 286, 283, 286, 285, 287 | -12.8% | | xor::query_shards::16_present/128 | xorf | 20000 | 328 | 326–328 | 326, 326, 328, 328, 328 | reference | | xor::query_shards::16_absent/128 | DataSketches | 20000 | 285 | 283–293 | 285, 293, 284, 283, 285 | -12.6% | | xor::query_shards::16_absent/128 | xorf | 20000 | 326 | 325–327 | 326, 326, 325, 326, 327 | reference | | xor::query_shards::16_present/16384 | DataSketches | 20000 | 364 | 358–367 | 364, 358, 363, 367, 364 | -13.9% | | xor::query_shards::16_present/16384 | xorf | 20000 | 423 | 422–428 | 423, 428, 423, 424, 422 | reference | | xor::query_shards::16_absent/16384 | DataSketches | 20000 | 363 | 361–365 | 363, 361, 365, 363, 364 | -15.2% | | xor::query_shards::16_absent/16384 | xorf | 20000 | 428 | 426–433 | 433, 432, 428, 426, 426 | reference | | xor::query_shards::32_present/128 | DataSketches | 20000 | 277 | 275–279 | 279, 276, 275, 278, 277 | -23.9% | | xor::query_shards::32_present/128 | xorf | 20000 | 364 | 363–365 | 364, 364, 365, 363, 363 | reference | | xor::query_shards::32_absent/128 | DataSketches | 20000 | 278 | 276–291 | 276, 277, 279, 291, 278 | -23.2% | | xor::query_shards::32_absent/128 | xorf | 20000 | 362 | 356–364 | 362, 364, 356, 359, 362 | reference | | xor::query_shards::32_present/16384 | DataSketches | 20000 | 372 | 368–373 | 368, 373, 369, 372, 372 | -16.2% | | xor::query_shards::32_present/16384 | xorf | 20000 | 444 | 441–446 | 446, 444, 446, 441, 442 | reference | | xor::query_shards::32_absent/16384 | DataSketches | 20000 | 367 | 360–375 | 375, 360, 367, 368, 366 | -17.3% | | xor::query_shards::32_absent/16384 | xorf | 20000 | 444 | 442–450 | 450, 443, 448, 442, 444 | reference | ### Fat LTO, one codegen unit | Scenario | Implementation | Rounds | Median | Min–max | Raw samples | Delta vs xorf | | ----------------------------------- | -------------- | ------ | ------ | ------- | ----------------------- | ------------- | | xor::build::8_distinct/1000 | DataSketches | 60000 | 315 | 315–334 | 334, 319, 315, 315, 315 | -32.7% | | xor::build::8_distinct/1000 | xorf | 60000 | 468 | 468–488 | 468, 488, 470, 468, 468 | reference | | xor::build::8_deduplicate/1000 | DataSketches | 60000 | 365 | 365–371 | 365, 371, 365, 365, 367 | -10.3% | | xor::build::8_deduplicate/1000 | xorf | 60000 | 407 | 407–411 | 407, 408, 411, 407, 407 | reference | | xor::build::16_distinct/1000 | DataSketches | 60000 | 318 | 314–382 | 318, 382, 318, 316, 314 | -32.2% | | xor::build::16_distinct/1000 | xorf | 60000 | 469 | 466–479 | 468, 477, 479, 469, 466 | reference | | xor::build::16_deduplicate/1000 | DataSketches | 60000 | 360 | 356–366 | 365, 366, 360, 358, 356 | -10.9% | | xor::build::16_deduplicate/1000 | xorf | 60000 | 404 | 401–410 | 410, 404, 405, 401, 401 | reference | | xor::build::32_distinct/1000 | DataSketches | 60000 | 304 | 303–306 | 303, 306, 304, 304, 303 | -33.9% | | xor::build::32_distinct/1000 | xorf | 60000 | 460 | 457–470 | 470, 464, 459, 457, 460 | reference | | xor::build::32_deduplicate/1000 | DataSketches | 60000 | 360 | 357–364 | 361, 360, 357, 364, 358 | -11.1% | | xor::build::32_deduplicate/1000 | xorf | 60000 | 405 | 401–407 | 405, 407, 406, 403, 401 | reference | | xor::build::8_distinct/16384 | DataSketches | 2000 | 357 | 354–361 | 355, 361, 360, 357, 354 | +28.0% | | xor::build::8_distinct/16384 | xorf | 2000 | 279 | 278–285 | 279, 278, 285, 278, 280 | reference | | xor::build::8_deduplicate/16384 | DataSketches | 2000 | 253 | 251–258 | 255, 252, 251, 258, 253 | -9.0% | | xor::build::8_deduplicate/16384 | xorf | 2000 | 278 | 277–303 | 278, 277, 281, 303, 278 | reference | | xor::build::16_distinct/16384 | DataSketches | 2000 | 365 | 363–368 | 365, 364, 363, 368, 368 | +26.7% | | xor::build::16_distinct/16384 | xorf | 2000 | 288 | 286–292 | 292, 288, 288, 286, 290 | reference | | xor::build::16_deduplicate/16384 | DataSketches | 2000 | 253 | 250–254 | 253, 254, 251, 250, 254 | -8.7% | | xor::build::16_deduplicate/16384 | xorf | 2000 | 277 | 274–281 | 276, 281, 277, 274, 278 | reference | | xor::build::32_distinct/16384 | DataSketches | 2000 | 366 | 362–374 | 362, 370, 374, 366, 366 | +28.9% | | xor::build::32_distinct/16384 | xorf | 2000 | 284 | 282–290 | 284, 288, 290, 284, 282 | reference | | xor::build::32_deduplicate/16384 | DataSketches | 2000 | 253 | 248–259 | 259, 248, 250, 253, 254 | -8.7% | | xor::build::32_deduplicate/16384 | xorf | 2000 | 277 | 275–278 | 278, 275, 275, 277, 277 | reference | | xor::build::8_distinct/1000000 | DataSketches | 12 | 154 | 153–158 | 158, 153, 154, 155, 153 | -42.3% | | xor::build::8_distinct/1000000 | xorf | 12 | 267 | 255–278 | 278, 263, 255, 270, 267 | reference | | xor::build::8_deduplicate/1000000 | DataSketches | 12 | 152 | 150–152 | 150, 152, 151, 152, 152 | -12.6% | | xor::build::8_deduplicate/1000000 | xorf | 12 | 174 | 172–176 | 172, 176, 174, 174, 174 | reference | | xor::build::16_distinct/1000000 | DataSketches | 12 | 160 | 152–167 | 160, 153, 152, 163, 167 | -39.8% | | xor::build::16_distinct/1000000 | xorf | 12 | 266 | 260–277 | 273, 260, 260, 266, 277 | reference | | xor::build::16_deduplicate/1000000 | DataSketches | 12 | 153 | 151–154 | 153, 151, 152, 154, 153 | -12.6% | | xor::build::16_deduplicate/1000000 | xorf | 12 | 175 | 174–176 | 174, 174, 175, 176, 176 | reference | | xor::build::32_distinct/1000000 | DataSketches | 12 | 157 | 155–161 | 160, 155, 155, 161, 157 | -42.3% | | xor::build::32_distinct/1000000 | xorf | 12 | 272 | 265–289 | 284, 272, 265, 272, 289 | reference | | xor::build::32_deduplicate/1000000 | DataSketches | 12 | 153 | 152–154 | 153, 152, 153, 154, 154 | -13.1% | | xor::build::32_deduplicate/1000000 | xorf | 12 | 176 | 175–177 | 175, 175, 176, 176, 177 | reference | | xor::build_batches::8/128 | default_seed | 10000 | 271 | 269–273 | 271, 273, 273, 271, 269 | -32.8% | | xor::build_batches::8/128 | matched_seed | 10000 | 267 | 267–273 | 273, 267, 271, 267, 267 | -33.7% | | xor::build_batches::8/128 | xorf | 10000 | 403 | 401–413 | 403, 403, 410, 401, 413 | reference | | xor::build_batches::8/16384 | default_seed | 40 | 152 | 148–152 | 150, 152, 152, 152, 148 | -57.7% | | xor::build_batches::8/16384 | matched_seed | 40 | 141 | 138–143 | 138, 140, 142, 143, 141 | -60.7% | | xor::build_batches::8/16384 | xorf | 40 | 359 | 357–362 | 357, 357, 362, 361, 359 | reference | | xor::build_batches::8/50000 | default_seed | 12 | 173 | 171–174 | 171, 171, 173, 173, 174 | -47.9% | | xor::build_batches::8/50000 | matched_seed | 12 | 169 | 168–173 | 170, 169, 169, 168, 173 | -49.1% | | xor::build_batches::8/50000 | xorf | 12 | 332 | 329–336 | 332, 329, 336, 332, 331 | reference | | xor::query::8_present/16384 | DataSketches | 10000 | 248 | 247–252 | 248, 247, 248, 252, 249 | -1.2% | | xor::query::8_present/16384 | xorf | 10000 | 251 | 250–254 | 251, 252, 250, 251, 254 | reference | | xor::query::8_present/50000 | DataSketches | 3000 | 224 | 220–225 | 224, 224, 225, 220, 220 | -3.0% | | xor::query::8_present/50000 | xorf | 3000 | 231 | 226–236 | 236, 236, 229, 226, 231 | reference | | xor::query::8_absent/16384 | DataSketches | 10000 | 248 | 244–248 | 248, 244, 248, 247, 248 | -1.2% | | xor::query::8_absent/16384 | xorf | 10000 | 251 | 249–253 | 251, 251, 253, 249, 252 | reference | | xor::query::8_absent/50000 | DataSketches | 3000 | 221 | 221–226 | 226, 221, 221, 223, 221 | -3.1% | | xor::query::8_absent/50000 | xorf | 3000 | 228 | 224–233 | 233, 226, 229, 228, 224 | reference | | xor::query::16_present/16384 | DataSketches | 10000 | 251 | 249–253 | 250, 251, 252, 253, 249 | -2.0% | | xor::query::16_present/16384 | xorf | 10000 | 256 | 252–257 | 256, 257, 256, 257, 252 | reference | | xor::query::16_present/50000 | DataSketches | 3000 | 238 | 236–241 | 236, 238, 240, 241, 238 | +1.3% | | xor::query::16_present/50000 | xorf | 3000 | 235 | 234–235 | 235, 235, 234, 235, 234 | reference | | xor::query::16_absent/16384 | DataSketches | 10000 | 252 | 250–256 | 256, 251, 250, 252, 253 | -1.2% | | xor::query::16_absent/16384 | xorf | 10000 | 255 | 254–285 | 259, 285, 254, 254, 255 | reference | | xor::query::16_absent/50000 | DataSketches | 3000 | 239 | 237–241 | 237, 241, 239, 239, 240 | +1.7% | | xor::query::16_absent/50000 | xorf | 3000 | 235 | 230–241 | 231, 241, 236, 235, 230 | reference | | xor::query::32_present/16384 | DataSketches | 10000 | 244 | 243–246 | 244, 246, 245, 243, 244 | -3.2% | | xor::query::32_present/16384 | xorf | 10000 | 252 | 251–255 | 251, 252, 253, 251, 255 | reference | | xor::query::32_present/50000 | DataSketches | 3000 | 254 | 248–258 | 254, 256, 258, 248, 249 | -3.8% | | xor::query::32_present/50000 | xorf | 3000 | 264 | 262–270 | 264, 262, 270, 265, 263 | reference | | xor::query::32_absent/16384 | DataSketches | 10000 | 242 | 241–243 | 241, 242, 243, 242, 243 | -6.6% | | xor::query::32_absent/16384 | xorf | 10000 | 259 | 256–261 | 259, 256, 257, 259, 261 | reference | | xor::query::32_absent/50000 | DataSketches | 3000 | 248 | 247–253 | 253, 247, 252, 248, 248 | -5.3% | | xor::query::32_absent/50000 | xorf | 3000 | 262 | 259–268 | 261, 259, 262, 268, 265 | reference | | xor::query_shards::8_present/128 | DataSketches | 20000 | 277 | 274–279 | 276, 278, 279, 274, 277 | -1.4% | | xor::query_shards::8_present/128 | xorf | 20000 | 281 | 280–282 | 282, 281, 281, 280, 280 | reference | | xor::query_shards::8_absent/128 | DataSketches | 20000 | 277 | 273–279 | 273, 277, 274, 279, 277 | -0.7% | | xor::query_shards::8_absent/128 | xorf | 20000 | 279 | 277–286 | 277, 279, 278, 286, 283 | reference | | xor::query_shards::8_present/16384 | DataSketches | 20000 | 341 | 341–345 | 341, 341, 341, 345, 345 | -1.2% | | xor::query_shards::8_present/16384 | xorf | 20000 | 345 | 340–347 | 340, 345, 344, 346, 347 | reference | | xor::query_shards::8_absent/16384 | DataSketches | 20000 | 358 | 352–358 | 358, 355, 358, 358, 352 | +2.0% | | xor::query_shards::8_absent/16384 | xorf | 20000 | 351 | 349–355 | 355, 350, 349, 351, 351 | reference | | xor::query_shards::16_present/128 | DataSketches | 20000 | 289 | 283–295 | 295, 293, 288, 289, 283 | +1.0% | | xor::query_shards::16_present/128 | xorf | 20000 | 286 | 284–297 | 287, 297, 286, 284, 284 | reference | | xor::query_shards::16_absent/128 | DataSketches | 20000 | 284 | 282–294 | 284, 282, 294, 283, 285 | -0.7% | | xor::query_shards::16_absent/128 | xorf | 20000 | 286 | 281–289 | 284, 281, 289, 286, 287 | reference | | xor::query_shards::16_present/16384 | DataSketches | 20000 | 362 | 359–365 | 362, 365, 359, 364, 360 | +1.1% | | xor::query_shards::16_present/16384 | xorf | 20000 | 358 | 354–359 | 358, 358, 354, 359, 357 | reference | | xor::query_shards::16_absent/16384 | DataSketches | 20000 | 370 | 368–375 | 368, 368, 370, 375, 370 | +1.6% | | xor::query_shards::16_absent/16384 | xorf | 20000 | 364 | 360–372 | 372, 363, 360, 364, 367 | reference | | xor::query_shards::32_present/128 | DataSketches | 20000 | 277 | 277–278 | 278, 277, 277, 277, 277 | -2.5% | | xor::query_shards::32_present/128 | xorf | 20000 | 284 | 281–299 | 284, 299, 282, 281, 284 | reference | | xor::query_shards::32_absent/128 | DataSketches | 20000 | 276 | 275–279 | 279, 276, 278, 275, 275 | -2.5% | | xor::query_shards::32_absent/128 | xorf | 20000 | 283 | 281–290 | 283, 290, 283, 281, 282 | reference | | xor::query_shards::32_present/16384 | DataSketches | 20000 | 364 | 359–368 | 364, 368, 364, 363, 359 | -0.5% | | xor::query_shards::32_present/16384 | xorf | 20000 | 366 | 359–371 | 367, 371, 363, 366, 359 | reference | | xor::query_shards::32_absent/16384 | DataSketches | 20000 | 370 | 364–380 | 364, 368, 372, 380, 370 | +2.2% | | xor::query_shards::32_absent/16384 | xorf | 20000 | 362 | 361–367 | 367, 362, 367, 362, 361 | reference | </details> -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
