Skip to content

perf: Manually unroll loops for no mix no null case in OptimizedVecto…#2004

Open
yingsu00 wants to merge 1 commit into
IBM:optimized_partitionedoutputfrom
yingsu00:OptimizedVectorHasher
Open

perf: Manually unroll loops for no mix no null case in OptimizedVecto…#2004
yingsu00 wants to merge 1 commit into
IBM:optimized_partitionedoutputfrom
yingsu00:OptimizedVectorHasher

Conversation

@yingsu00
Copy link
Copy Markdown
Collaborator

@yingsu00 yingsu00 commented May 8, 2026

This improved real and double performance for the Mix case for 2x.

The benchmark results on Macbook M1 Max Tahoe 26.2 for the Mix case are listed below:

Before:

With Mix, no unroll 

/Users/yingsu/repo/ibmvelox2/velox/_build/release/velox/exec/benchmarks/velox_exec_optimized_vector_hasher_benchmark
============================================================================
[...]ks/OptimizedVectorHasherBenchmark.cpp     relative  time/iter   iters/s
============================================================================
double_flat_no_null_mix_10000                              28.35us    35.27K
optimized_double_flat_no_null_mix_10000         36.564%    77.53us    12.90K
----------------------------------------------------------------------------
double_flat_half_null_mix_10000                            52.20us    19.16K
optimized_double_flat_half_null_mix_10000       87.651%    59.55us    16.79K
----------------------------------------------------------------------------
double_flat_all_null_mix_10000                             18.76us    53.31K
optimized_double_flat_all_null_mix_10000        166.91%    11.24us    88.98K
----------------------------------------------------------------------------
double_flat_no_null_mix_1000000                             2.81ms    355.31
optimized_double_flat_no_null_mix_1000000       34.394%     8.18ms    122.20
----------------------------------------------------------------------------
double_flat_half_null_mix_1000000                           7.62ms    131.17
optimized_double_flat_half_null_mix_1000000     85.683%     8.90ms    112.39
----------------------------------------------------------------------------
double_flat_all_null_mix_1000000                            1.91ms    522.68
optimized_double_flat_all_null_mix_1000000      162.80%     1.18ms    850.90
----------------------------------------------------------------------------
double_dictionary_80pct_no_null_mix_10000                  33.09us    30.22K
optimized_double_dictionary_80pct_no_null_mix_1 159.65%    20.73us    48.25K
----------------------------------------------------------------------------
double_dictionary_80pct_half_null_mix_10000                30.26us    33.05K
optimized_double_dictionary_80pct_half_null_mix 159.22%    19.00us    52.62K
----------------------------------------------------------------------------
double_dictionary_80pct_all_null_mix_10000                 22.80us    43.86K
optimized_double_dictionary_80pct_all_null_mix_ 135.88%    16.78us    59.60K
----------------------------------------------------------------------------
double_dictionary_60pct_no_null_mix_10000                  31.17us    32.08K
optimized_double_dictionary_60pct_no_null_mix_1 174.31%    17.88us    55.92K
----------------------------------------------------------------------------
double_dictionary_60pct_half_null_mix_10000                29.43us    33.98K
optimized_double_dictionary_60pct_half_null_mix 176.90%    16.64us    60.10K
----------------------------------------------------------------------------
double_dictionary_60pct_all_null_mix_10000                 22.86us    43.75K
optimized_double_dictionary_60pct_all_null_mix_ 140.05%    16.32us    61.27K
----------------------------------------------------------------------------
double_dictionary_40pct_no_null_mix_10000                  29.03us    34.45K
optimized_double_dictionary_40pct_no_null_mix_1 184.57%    15.73us    63.59K
----------------------------------------------------------------------------
double_dictionary_40pct_half_null_mix_10000                28.39us    35.22K
optimized_double_dictionary_40pct_half_null_mix 194.99%    14.56us    68.68K
----------------------------------------------------------------------------
double_dictionary_40pct_all_null_mix_10000                 22.35us    44.75K
optimized_double_dictionary_40pct_all_null_mix_ 146.21%    15.28us    65.43K
----------------------------------------------------------------------------
double_dictionary_20pct_no_null_mix_10000                  27.30us    36.63K
optimized_double_dictionary_20pct_no_null_mix_1 198.79%    13.73us    72.82K
----------------------------------------------------------------------------
double_dictionary_20pct_half_null_mix_10000                27.71us    36.08K
optimized_double_dictionary_20pct_half_null_mix 208.55%    13.29us    75.25K
----------------------------------------------------------------------------
double_dictionary_20pct_all_null_mix_10000                 22.20us    45.04K
optimized_double_dictionary_20pct_all_null_mix_ 171.49%    12.95us    77.25K
----------------------------------------------------------------------------
double_dictionary_5pct_no_null_mix_10000                   25.69us    38.92K
optimized_double_dictionary_5pct_no_null_mix_10 242.38%    10.60us    94.34K
----------------------------------------------------------------------------
double_dictionary_5pct_half_null_mix_10000                 26.97us    37.07K
optimized_double_dictionary_5pct_half_null_mix_ 255.54%    10.56us    94.73K
----------------------------------------------------------------------------
double_dictionary_5pct_all_null_mix_10000                  22.09us    45.28K
optimized_double_dictionary_5pct_all_null_mix_1 212.43%    10.40us    96.18K
----------------------------------------------------------------------------
double_dictionary_80pct_no_null_mix_1000000                 3.32ms    301.05
optimized_double_dictionary_80pct_no_null_mix_1 151.89%     2.19ms    457.28
----------------------------------------------------------------------------
double_dictionary_80pct_half_null_mix_1000000               3.02ms    330.81
optimized_double_dictionary_80pct_half_null_mix 151.91%     1.99ms    502.54
----------------------------------------------------------------------------
double_dictionary_80pct_all_null_mix_1000000                2.25ms    445.02
optimized_double_dictionary_80pct_all_null_mix_ 128.60%     1.75ms    572.31
----------------------------------------------------------------------------
double_dictionary_60pct_no_null_mix_1000000                 3.12ms    320.67
optimized_double_dictionary_60pct_no_null_mix_1 164.57%     1.89ms    527.73
----------------------------------------------------------------------------
double_dictionary_60pct_half_null_mix_1000000               2.93ms    341.05
optimized_double_dictionary_60pct_half_null_mix 167.17%     1.75ms    570.12
----------------------------------------------------------------------------
double_dictionary_60pct_all_null_mix_1000000                2.23ms    447.73
optimized_double_dictionary_60pct_all_null_mix_ 142.50%     1.57ms    638.02
----------------------------------------------------------------------------
double_dictionary_40pct_no_null_mix_1000000                 2.90ms    345.22
optimized_double_dictionary_40pct_no_null_mix_1 182.15%     1.59ms    628.82
----------------------------------------------------------------------------
double_dictionary_40pct_half_null_mix_1000000               2.83ms    353.80
optimized_double_dictionary_40pct_half_null_mix 188.60%     1.50ms    667.27
----------------------------------------------------------------------------
double_dictionary_40pct_all_null_mix_1000000                2.24ms    447.28
optimized_double_dictionary_40pct_all_null_mix_ 163.27%     1.37ms    730.29
----------------------------------------------------------------------------
double_dictionary_20pct_no_null_mix_1000000                 2.69ms    371.80
optimized_double_dictionary_20pct_no_null_mix_1 208.37%     1.29ms    774.70
----------------------------------------------------------------------------
double_dictionary_20pct_half_null_mix_1000000               2.73ms    366.75
optimized_double_dictionary_20pct_half_null_mix 219.56%     1.24ms    805.25
----------------------------------------------------------------------------
double_dictionary_20pct_all_null_mix_1000000                2.21ms    453.10
optimized_double_dictionary_20pct_all_null_mix_ 187.38%     1.18ms    849.00
----------------------------------------------------------------------------
double_dictionary_5pct_no_null_mix_1000000                  2.54ms    393.77
optimized_double_dictionary_5pct_no_null_mix_10 238.99%     1.06ms    941.08
----------------------------------------------------------------------------
double_dictionary_5pct_half_null_mix_1000000                2.67ms    375.09
optimized_double_dictionary_5pct_half_null_mix_ 253.48%     1.05ms    950.77
----------------------------------------------------------------------------
double_dictionary_5pct_all_null_mix_1000000                 2.19ms    457.30
optimized_double_dictionary_5pct_all_null_mix_1 211.38%     1.03ms    966.67
----------------------------------------------------------------------------
double_constant_no_null_mix_10000                           7.79us   128.36K
optimized_double_constant_no_null_mix_10000     117.75%     6.62us   151.15K
----------------------------------------------------------------------------
double_constant_all_null_mix_10000                          7.96us   125.64K
optimized_double_constant_all_null_mix_10000    121.99%     6.52us   153.27K
----------------------------------------------------------------------------
double_constant_no_null_mix_1000000                       856.11us     1.17K
optimized_double_constant_no_null_mix_1000000   127.02%   673.98us     1.48K
----------------------------------------------------------------------------
double_constant_all_null_mix_1000000                      849.32us     1.18K
optimized_double_constant_all_null_mix_1000000  126.44%   671.73us     1.49K
----------------------------------------------------------------------------

Process finished with exit code 0

After:

With Mix, Munually unroll

/Users/yingsu/repo/ibmvelox2/velox/_build/release/velox/exec/benchmarks/velox_exec_optimized_vector_hasher_benchmark
============================================================================
[...]ks/OptimizedVectorHasherBenchmark.cpp     relative  time/iter   iters/s
============================================================================
double_flat_no_null_mix_10000                              28.33us    35.30K
optimized_double_flat_no_null_mix_10000         153.45%    18.46us    54.17K
----------------------------------------------------------------------------
double_flat_half_null_mix_10000                            61.47us    16.27K
optimized_double_flat_half_null_mix_10000       111.11%    55.32us    18.08K
----------------------------------------------------------------------------
double_flat_all_null_mix_10000                             18.80us    53.18K
optimized_double_flat_all_null_mix_10000        167.52%    11.23us    89.09K
----------------------------------------------------------------------------
double_flat_no_null_mix_1000000                             2.82ms    355.13
optimized_double_flat_no_null_mix_1000000       151.73%     1.86ms    538.82
----------------------------------------------------------------------------
double_flat_half_null_mix_1000000                           8.75ms    114.35
optimized_double_flat_half_null_mix_1000000     100.25%     8.72ms    114.64
----------------------------------------------------------------------------
double_flat_all_null_mix_1000000                            1.92ms    520.97
optimized_double_flat_all_null_mix_1000000      163.52%     1.17ms    851.89
----------------------------------------------------------------------------
double_dictionary_80pct_no_null_mix_10000                  32.97us    30.33K
optimized_double_dictionary_80pct_no_null_mix_1 159.09%    20.73us    48.25K
----------------------------------------------------------------------------
double_dictionary_80pct_half_null_mix_10000                30.25us    33.06K
optimized_double_dictionary_80pct_half_null_mix 159.03%    19.02us    52.58K
----------------------------------------------------------------------------
double_dictionary_80pct_all_null_mix_10000                 22.80us    43.85K
optimized_double_dictionary_80pct_all_null_mix_ 135.79%    16.79us    59.54K
----------------------------------------------------------------------------
double_dictionary_60pct_no_null_mix_10000                  31.09us    32.17K
optimized_double_dictionary_60pct_no_null_mix_1 173.95%    17.87us    55.95K
----------------------------------------------------------------------------
double_dictionary_60pct_half_null_mix_10000                29.46us    33.94K
optimized_double_dictionary_60pct_half_null_mix 176.59%    16.69us    59.93K
----------------------------------------------------------------------------
double_dictionary_60pct_all_null_mix_10000                 22.85us    43.76K
optimized_double_dictionary_60pct_all_null_mix_ 139.62%    16.37us    61.10K
----------------------------------------------------------------------------
double_dictionary_40pct_no_null_mix_10000                  29.02us    34.46K
optimized_double_dictionary_40pct_no_null_mix_1 187.92%    15.44us    64.77K
----------------------------------------------------------------------------
double_dictionary_40pct_half_null_mix_10000                28.42us    35.18K
optimized_double_dictionary_40pct_half_null_mix 195.63%    14.53us    68.83K
----------------------------------------------------------------------------
double_dictionary_40pct_all_null_mix_10000                 22.38us    44.68K
optimized_double_dictionary_40pct_all_null_mix_ 146.50%    15.28us    65.45K
----------------------------------------------------------------------------
double_dictionary_20pct_no_null_mix_10000                  27.39us    36.51K
optimized_double_dictionary_20pct_no_null_mix_1 196.42%    13.95us    71.71K
----------------------------------------------------------------------------
double_dictionary_20pct_half_null_mix_10000                27.86us    35.89K
optimized_double_dictionary_20pct_half_null_mix 205.53%    13.55us    73.77K
----------------------------------------------------------------------------
double_dictionary_20pct_all_null_mix_10000                 22.17us    45.11K
optimized_double_dictionary_20pct_all_null_mix_ 169.68%    13.07us    76.54K
----------------------------------------------------------------------------
double_dictionary_5pct_no_null_mix_10000                   25.67us    38.95K
optimized_double_dictionary_5pct_no_null_mix_10 226.55%    11.33us    88.25K
----------------------------------------------------------------------------
double_dictionary_5pct_half_null_mix_10000                 26.98us    37.06K
optimized_double_dictionary_5pct_half_null_mix_ 240.23%    11.23us    89.02K
----------------------------------------------------------------------------
double_dictionary_5pct_all_null_mix_10000                  22.08us    45.30K
optimized_double_dictionary_5pct_all_null_mix_1 210.85%    10.47us    95.51K
----------------------------------------------------------------------------
double_dictionary_80pct_no_null_mix_1000000                 3.31ms    302.20
optimized_double_dictionary_80pct_no_null_mix_1 151.14%     2.19ms    456.75
----------------------------------------------------------------------------
double_dictionary_80pct_half_null_mix_1000000               3.03ms    330.12
optimized_double_dictionary_80pct_half_null_mix 151.39%     2.00ms    499.75
----------------------------------------------------------------------------
double_dictionary_80pct_all_null_mix_1000000                2.25ms    444.32
optimized_double_dictionary_80pct_all_null_mix_ 128.45%     1.75ms    570.73
----------------------------------------------------------------------------
double_dictionary_60pct_no_null_mix_1000000                 3.10ms    322.93
optimized_double_dictionary_60pct_no_null_mix_1 163.20%     1.90ms    527.04
----------------------------------------------------------------------------
double_dictionary_60pct_half_null_mix_1000000               2.94ms    340.57
optimized_double_dictionary_60pct_half_null_mix 167.29%     1.76ms    569.75
----------------------------------------------------------------------------
double_dictionary_60pct_all_null_mix_1000000                2.23ms    448.14
optimized_double_dictionary_60pct_all_null_mix_ 142.12%     1.57ms    636.90
----------------------------------------------------------------------------
double_dictionary_40pct_no_null_mix_1000000                 2.90ms    345.19
optimized_double_dictionary_40pct_no_null_mix_1 181.47%     1.60ms    626.43
----------------------------------------------------------------------------
double_dictionary_40pct_half_null_mix_1000000               2.84ms    352.56
optimized_double_dictionary_40pct_half_null_mix 188.91%     1.50ms    666.03
----------------------------------------------------------------------------
double_dictionary_40pct_all_null_mix_1000000                2.24ms    445.98
optimized_double_dictionary_40pct_all_null_mix_ 163.82%     1.37ms    730.62
----------------------------------------------------------------------------
double_dictionary_20pct_no_null_mix_1000000                 2.69ms    372.23
optimized_double_dictionary_20pct_no_null_mix_1 207.29%     1.30ms    771.62
----------------------------------------------------------------------------
double_dictionary_20pct_half_null_mix_1000000               2.73ms    366.27
optimized_double_dictionary_20pct_half_null_mix 218.01%     1.25ms    798.52
----------------------------------------------------------------------------
double_dictionary_20pct_all_null_mix_1000000                2.21ms    453.07
optimized_double_dictionary_20pct_all_null_mix_ 186.08%     1.19ms    843.06
----------------------------------------------------------------------------
double_dictionary_5pct_no_null_mix_1000000                  2.55ms    392.81
optimized_double_dictionary_5pct_no_null_mix_10 240.61%     1.06ms    945.16
----------------------------------------------------------------------------
double_dictionary_5pct_half_null_mix_1000000                2.66ms    375.49
optimized_double_dictionary_5pct_half_null_mix_ 252.75%     1.05ms    949.05
----------------------------------------------------------------------------
double_dictionary_5pct_all_null_mix_1000000                 2.19ms    456.87
optimized_double_dictionary_5pct_all_null_mix_1 210.91%     1.04ms    963.60
----------------------------------------------------------------------------
double_constant_no_null_mix_10000                           7.79us   128.37K
optimized_double_constant_no_null_mix_10000     117.75%     6.62us   151.15K
----------------------------------------------------------------------------
double_constant_all_null_mix_10000                          7.98us   125.39K
optimized_double_constant_all_null_mix_10000    122.18%     6.53us   153.20K
----------------------------------------------------------------------------
double_constant_no_null_mix_1000000                       858.98us     1.16K
optimized_double_constant_no_null_mix_1000000   126.77%   677.61us     1.48K
----------------------------------------------------------------------------
double_constant_all_null_mix_1000000                      875.73us     1.14K
optimized_double_constant_all_null_mix_1000000  130.47%   671.19us     1.49K
----------------------------------------------------------------------------

Process finished with exit code 0

…rHasher

This improved real and double performance for 2x.
@yingsu00 yingsu00 force-pushed the OptimizedVectorHasher branch from 07902b1 to 8fcdf0a Compare May 8, 2026 05:08
@yingsu00 yingsu00 self-assigned this May 9, 2026
@xin-zhang2
Copy link
Copy Markdown
Member

@yingsu00
I didn't see improvement on my local env (Macbook M3 Max, Tahoe 26.3).
Here's the benchmark result.

Before

❯ ./_build/release/velox/exec/benchmarks/velox_exec_optimized_vector_hasher_benchmark
============================================================================
[...]ks/OptimizedVectorHasherBenchmark.cpp     relative  time/iter   iters/s
============================================================================
double_flat_no_null_mix_10000                              21.31us    46.93K
optimized_double_flat_no_null_mix_10000         157.70%    13.51us    74.00K
----------------------------------------------------------------------------
double_flat_half_null_mix_10000                            21.27us    47.01K
optimized_double_flat_half_null_mix_10000       176.00%    12.09us    82.73K
----------------------------------------------------------------------------
double_flat_all_null_mix_10000                             15.98us    62.59K
optimized_double_flat_all_null_mix_10000        199.61%     8.00us   124.94K
----------------------------------------------------------------------------
double_flat_no_null_mix_1000000                             2.12ms    471.16
optimized_double_flat_no_null_mix_1000000       157.35%     1.35ms    741.39
----------------------------------------------------------------------------
double_flat_half_null_mix_1000000                           2.12ms    471.96
optimized_double_flat_half_null_mix_1000000     178.07%     1.19ms    840.43
----------------------------------------------------------------------------
double_flat_all_null_mix_1000000                            1.59ms    629.46
optimized_double_flat_all_null_mix_1000000      199.19%   797.57us     1.25K
----------------------------------------------------------------------------
double_dictionary_80pct_no_null_mix_10000                  26.76us    37.37K
optimized_double_dictionary_80pct_no_null_mix_1 202.76%    13.20us    75.78K
----------------------------------------------------------------------------
double_dictionary_80pct_half_null_mix_10000                26.05us    38.39K
optimized_double_dictionary_80pct_half_null_mix 172.60%    15.09us    66.26K
----------------------------------------------------------------------------
double_dictionary_80pct_all_null_mix_10000                 18.01us    55.51K
optimized_double_dictionary_80pct_all_null_mix_ 141.19%    12.76us    78.38K
----------------------------------------------------------------------------
double_dictionary_60pct_no_null_mix_10000                  23.57us    42.43K
optimized_double_dictionary_60pct_no_null_mix_1 209.25%    11.26us    88.78K
----------------------------------------------------------------------------
double_dictionary_60pct_half_null_mix_10000                25.32us    39.50K
optimized_double_dictionary_60pct_half_null_mix 192.33%    13.16us    75.96K
----------------------------------------------------------------------------
double_dictionary_60pct_all_null_mix_10000                 19.17us    52.17K
optimized_double_dictionary_60pct_all_null_mix_ 188.43%    10.17us    98.30K
----------------------------------------------------------------------------
double_dictionary_40pct_no_null_mix_10000                  22.30us    44.84K
optimized_double_dictionary_40pct_no_null_mix_1 229.67%     9.71us   102.99K
----------------------------------------------------------------------------
double_dictionary_40pct_half_null_mix_10000                22.85us    43.77K
optimized_double_dictionary_40pct_half_null_mix 217.18%    10.52us    95.06K
----------------------------------------------------------------------------
double_dictionary_40pct_all_null_mix_10000                 18.95us    52.77K
optimized_double_dictionary_40pct_all_null_mix_ 205.02%     9.24us   108.18K
----------------------------------------------------------------------------
double_dictionary_20pct_no_null_mix_10000                  22.64us    44.17K
optimized_double_dictionary_20pct_no_null_mix_1 290.59%     7.79us   128.36K
----------------------------------------------------------------------------
double_dictionary_20pct_half_null_mix_10000                23.36us    42.80K
optimized_double_dictionary_20pct_half_null_mix 283.31%     8.25us   121.27K
----------------------------------------------------------------------------
double_dictionary_20pct_all_null_mix_10000                 18.81us    53.16K
optimized_double_dictionary_20pct_all_null_mix_ 249.11%     7.55us   132.43K
----------------------------------------------------------------------------
double_dictionary_5pct_no_null_mix_10000                   21.66us    46.16K
optimized_double_dictionary_5pct_no_null_mix_10 335.92%     6.45us   155.06K
----------------------------------------------------------------------------
double_dictionary_5pct_half_null_mix_10000                 21.33us    46.88K
optimized_double_dictionary_5pct_half_null_mix_ 325.49%     6.55us   152.59K
----------------------------------------------------------------------------
double_dictionary_5pct_all_null_mix_10000                  18.88us    52.96K
optimized_double_dictionary_5pct_all_null_mix_1 301.06%     6.27us   159.43K
----------------------------------------------------------------------------
double_dictionary_80pct_no_null_mix_1000000                 2.62ms    381.01
optimized_double_dictionary_80pct_no_null_mix_1 204.44%     1.28ms    778.93
----------------------------------------------------------------------------
double_dictionary_80pct_half_null_mix_1000000               2.52ms    396.53
optimized_double_dictionary_80pct_half_null_mix 171.62%     1.47ms    680.53
----------------------------------------------------------------------------
double_dictionary_80pct_all_null_mix_1000000                1.91ms    523.82
optimized_double_dictionary_80pct_all_null_mix_ 155.45%     1.23ms    814.26
----------------------------------------------------------------------------
double_dictionary_60pct_no_null_mix_1000000                 2.50ms    399.80
optimized_double_dictionary_60pct_no_null_mix_1 223.52%     1.12ms    893.63
----------------------------------------------------------------------------
double_dictionary_60pct_half_null_mix_1000000               2.56ms    390.11
optimized_double_dictionary_60pct_half_null_mix 202.52%     1.27ms    790.05
----------------------------------------------------------------------------
double_dictionary_60pct_all_null_mix_1000000                1.90ms    527.44
optimized_double_dictionary_60pct_all_null_mix_ 186.02%     1.02ms    981.13
----------------------------------------------------------------------------
double_dictionary_40pct_no_null_mix_1000000                 2.37ms    421.34
optimized_double_dictionary_40pct_no_null_mix_1 248.29%   955.90us     1.05K
----------------------------------------------------------------------------
double_dictionary_40pct_half_null_mix_1000000               2.39ms    418.54
optimized_double_dictionary_40pct_half_null_mix 228.27%     1.05ms    955.43
----------------------------------------------------------------------------
double_dictionary_40pct_all_null_mix_1000000                1.88ms    530.74
optimized_double_dictionary_40pct_all_null_mix_ 206.74%   911.36us     1.10K
----------------------------------------------------------------------------
double_dictionary_20pct_no_null_mix_1000000                 2.25ms    443.97
optimized_double_dictionary_20pct_no_null_mix_1 279.91%   804.69us     1.24K
----------------------------------------------------------------------------
double_dictionary_20pct_half_null_mix_1000000               2.37ms    422.20
optimized_double_dictionary_20pct_half_null_mix 277.40%   853.82us     1.17K
----------------------------------------------------------------------------
double_dictionary_20pct_all_null_mix_1000000                1.87ms    534.98
optimized_double_dictionary_20pct_all_null_mix_ 247.69%   754.65us     1.33K
----------------------------------------------------------------------------
double_dictionary_5pct_no_null_mix_1000000                  2.15ms    465.11
optimized_double_dictionary_5pct_no_null_mix_10 328.76%   653.99us     1.53K
----------------------------------------------------------------------------
double_dictionary_5pct_half_null_mix_1000000                2.27ms    440.52
optimized_double_dictionary_5pct_half_null_mix_ 330.78%   686.28us     1.46K
----------------------------------------------------------------------------
double_dictionary_5pct_all_null_mix_1000000                 1.86ms    537.64
optimized_double_dictionary_5pct_all_null_mix_1 297.62%   624.94us     1.60K
----------------------------------------------------------------------------
double_constant_no_null_mix_10000                           5.52us   181.16K
optimized_double_constant_no_null_mix_10000     112.02%     4.93us   202.93K
----------------------------------------------------------------------------
double_constant_all_null_mix_10000                          5.51us   181.41K
optimized_double_constant_all_null_mix_10000    105.64%     5.22us   191.64K
----------------------------------------------------------------------------
double_constant_no_null_mix_1000000                       532.65us     1.88K
optimized_double_constant_no_null_mix_1000000   102.85%   517.90us     1.93K
----------------------------------------------------------------------------
double_constant_all_null_mix_1000000                      550.19us     1.82K
optimized_double_constant_all_null_mix_1000000  111.66%   492.74us     2.03K
----------------------------------------------------------------------------

After

❯ ./_build/release/velox/exec/benchmarks/velox_exec_optimized_vector_hasher_benchmark
============================================================================
[...]ks/OptimizedVectorHasherBenchmark.cpp     relative  time/iter   iters/s
============================================================================
double_flat_no_null_mix_10000                              21.31us    46.94K
optimized_double_flat_no_null_mix_10000         164.37%    12.96us    77.15K
----------------------------------------------------------------------------
double_flat_half_null_mix_10000                            21.28us    46.99K
optimized_double_flat_half_null_mix_10000       177.04%    12.02us    83.20K
----------------------------------------------------------------------------
double_flat_all_null_mix_10000                             15.98us    62.59K
optimized_double_flat_all_null_mix_10000        199.48%     8.01us   124.85K
----------------------------------------------------------------------------
double_flat_no_null_mix_1000000                             2.12ms    471.15
optimized_double_flat_no_null_mix_1000000       164.49%     1.29ms    775.00
----------------------------------------------------------------------------
double_flat_half_null_mix_1000000                           2.12ms    472.06
optimized_double_flat_half_null_mix_1000000     177.73%     1.19ms    838.99
----------------------------------------------------------------------------
double_flat_all_null_mix_1000000                            1.59ms    629.46
optimized_double_flat_all_null_mix_1000000      199.19%   797.57us     1.25K
----------------------------------------------------------------------------
double_dictionary_80pct_no_null_mix_10000                  27.08us    36.93K
optimized_double_dictionary_80pct_no_null_mix_1 209.01%    12.96us    77.18K
----------------------------------------------------------------------------
double_dictionary_80pct_half_null_mix_10000                26.07us    38.36K
optimized_double_dictionary_80pct_half_null_mix 181.97%    14.33us    69.80K
----------------------------------------------------------------------------
double_dictionary_80pct_all_null_mix_10000                 19.29us    51.83K
optimized_double_dictionary_80pct_all_null_mix_ 154.00%    12.53us    79.81K
----------------------------------------------------------------------------
double_dictionary_60pct_no_null_mix_10000                  25.69us    38.92K
optimized_double_dictionary_60pct_no_null_mix_1 223.55%    11.49us    87.00K
----------------------------------------------------------------------------
double_dictionary_60pct_half_null_mix_10000                25.33us    39.48K
optimized_double_dictionary_60pct_half_null_mix 194.41%    13.03us    76.75K
----------------------------------------------------------------------------
double_dictionary_60pct_all_null_mix_10000                 19.19us    52.11K
optimized_double_dictionary_60pct_all_null_mix_ 175.52%    10.93us    91.46K
----------------------------------------------------------------------------
double_dictionary_40pct_no_null_mix_10000                  23.92us    41.81K
optimized_double_dictionary_40pct_no_null_mix_1 248.14%     9.64us   103.74K
----------------------------------------------------------------------------
double_dictionary_40pct_half_null_mix_10000                24.10us    41.50K
optimized_double_dictionary_40pct_half_null_mix 232.17%    10.38us    96.35K
----------------------------------------------------------------------------
double_dictionary_40pct_all_null_mix_10000                 18.96us    52.75K
optimized_double_dictionary_40pct_all_null_mix_ 205.71%     9.22us   108.52K
----------------------------------------------------------------------------
double_dictionary_20pct_no_null_mix_10000                  22.65us    44.15K
optimized_double_dictionary_20pct_no_null_mix_1 286.51%     7.91us   126.50K
----------------------------------------------------------------------------
double_dictionary_20pct_half_null_mix_10000                23.39us    42.76K
optimized_double_dictionary_20pct_half_null_mix 283.36%     8.25us   121.15K
----------------------------------------------------------------------------
double_dictionary_20pct_all_null_mix_10000                 18.81us    53.16K
optimized_double_dictionary_20pct_all_null_mix_ 265.60%     7.08us   141.20K
----------------------------------------------------------------------------
double_dictionary_5pct_no_null_mix_10000                   21.66us    46.17K
optimized_double_dictionary_5pct_no_null_mix_10 335.16%     6.46us   154.74K
----------------------------------------------------------------------------
double_dictionary_5pct_half_null_mix_10000                 22.84us    43.79K
optimized_double_dictionary_5pct_half_null_mix_ 349.85%     6.53us   153.20K
----------------------------------------------------------------------------
double_dictionary_5pct_all_null_mix_10000                  17.61us    56.78K
optimized_double_dictionary_5pct_all_null_mix_1 281.62%     6.25us   159.90K
----------------------------------------------------------------------------
double_dictionary_80pct_no_null_mix_1000000                 2.64ms    378.95
optimized_double_dictionary_80pct_no_null_mix_1 206.39%     1.28ms    782.12
----------------------------------------------------------------------------
double_dictionary_80pct_half_null_mix_1000000               2.53ms    394.68
optimized_double_dictionary_80pct_half_null_mix 173.29%     1.46ms    683.96
----------------------------------------------------------------------------
double_dictionary_80pct_all_null_mix_1000000                1.91ms    523.24
optimized_double_dictionary_80pct_all_null_mix_ 162.93%     1.17ms    852.53
----------------------------------------------------------------------------
double_dictionary_60pct_no_null_mix_1000000                 2.49ms    401.14
optimized_double_dictionary_60pct_no_null_mix_1 221.51%     1.13ms    888.57
----------------------------------------------------------------------------
double_dictionary_60pct_half_null_mix_1000000               2.43ms    411.46
optimized_double_dictionary_60pct_half_null_mix 188.85%     1.29ms    777.03
----------------------------------------------------------------------------
double_dictionary_60pct_all_null_mix_1000000                1.90ms    525.34
optimized_double_dictionary_60pct_all_null_mix_ 180.72%     1.05ms    949.42
----------------------------------------------------------------------------
double_dictionary_40pct_no_null_mix_1000000                 2.38ms    420.69
optimized_double_dictionary_40pct_no_null_mix_1 247.17%   961.69us     1.04K
----------------------------------------------------------------------------
double_dictionary_40pct_half_null_mix_1000000               2.39ms    417.68
optimized_double_dictionary_40pct_half_null_mix 227.65%     1.05ms    950.85
----------------------------------------------------------------------------
double_dictionary_40pct_all_null_mix_1000000                1.88ms    530.71
optimized_double_dictionary_40pct_all_null_mix_ 216.01%   872.32us     1.15K
----------------------------------------------------------------------------
double_dictionary_20pct_no_null_mix_1000000                 2.24ms    445.82
optimized_double_dictionary_20pct_no_null_mix_1 276.22%   812.07us     1.23K
----------------------------------------------------------------------------
double_dictionary_20pct_half_null_mix_1000000               2.32ms    430.94
optimized_double_dictionary_20pct_half_null_mix 271.68%   854.15us     1.17K
----------------------------------------------------------------------------
double_dictionary_20pct_all_null_mix_1000000                1.87ms    535.06
optimized_double_dictionary_20pct_all_null_mix_ 247.12%   756.28us     1.32K
----------------------------------------------------------------------------
double_dictionary_5pct_no_null_mix_1000000                  2.14ms    468.13
optimized_double_dictionary_5pct_no_null_mix_10 327.34%   652.57us     1.53K
----------------------------------------------------------------------------
double_dictionary_5pct_half_null_mix_1000000                2.27ms    440.48
optimized_double_dictionary_5pct_half_null_mix_ 329.62%   688.74us     1.45K
----------------------------------------------------------------------------
double_dictionary_5pct_all_null_mix_1000000                 1.86ms    537.57
optimized_double_dictionary_5pct_all_null_mix_1 315.97%   588.74us     1.70K
----------------------------------------------------------------------------
double_constant_no_null_mix_10000                           5.18us   192.99K
optimized_double_constant_no_null_mix_10000     99.574%     5.20us   192.17K
----------------------------------------------------------------------------
double_constant_all_null_mix_10000                          5.15us   194.11K
optimized_double_constant_all_null_mix_10000    104.46%     4.93us   202.77K
----------------------------------------------------------------------------
double_constant_no_null_mix_1000000                       515.36us     1.94K
optimized_double_constant_no_null_mix_1000000   105.58%   488.11us     2.05K
----------------------------------------------------------------------------
double_constant_all_null_mix_1000000                      517.49us     1.93K
optimized_double_constant_all_null_mix_1000000  99.177%   521.78us     1.92K
----------------------------------------------------------------------------

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.

2 participants