[libcxx-commits] [libcxx] [libcxx] Avoid hash key in __hash_table::find() if no buckets yet. (PR #126837)

via libcxx-commits libcxx-commits at lists.llvm.org
Sun Feb 16 19:56:17 PST 2025


xbcnn wrote:

Updated benchmarks:

Opt with size() check
```
# | --------------------------------------------------------------------------------------------------
# | Benchmark                                                        Time             CPU   Iterations
# | --------------------------------------------------------------------------------------------------
# | BM_UnorderedSet_Find_EmptyNoBuckets/long_string/1024         12121 ns        12120 ns        57902
# | BM_UnorderedSet_Find_EmptyNoBuckets/long_string/2048         24171 ns        24170 ns        28959
# | BM_UnorderedSet_Find_EmptyNoBuckets/long_string/4096         48279 ns        48277 ns        14452
# | BM_UnorderedSet_Find_EmptyNoBuckets/long_string/8192         96207 ns        96204 ns         7221
# | BM_UnorderedSet_Find_EmptyNoBuckets/long_string/16384       193415 ns       193404 ns         3611
# | BM_UnorderedSet_Find_EmptyNoBuckets/long_string/32768       384792 ns       384784 ns         1820
# | BM_UnorderedSet_Find_EmptyWithBuckets/long_string/1024       12823 ns        12822 ns        54793
# | BM_UnorderedSet_Find_EmptyWithBuckets/long_string/2048       25686 ns        25683 ns        27212
# | BM_UnorderedSet_Find_EmptyWithBuckets/long_string/4096       51277 ns        51275 ns        13573
# | BM_UnorderedSet_Find_EmptyWithBuckets/long_string/8192      102201 ns       102200 ns         6820
# | BM_UnorderedSet_Find_EmptyWithBuckets/long_string/16384     204915 ns       204908 ns         3405
# | BM_UnorderedSet_Find_EmptyWithBuckets/long_string/32768     410902 ns       410897 ns         1707
# | BM_UnorderedSet_Find_NonEmpty/long_string/1024              191005 ns       190999 ns         3666
# | BM_UnorderedSet_Find_NonEmpty/long_string/2048              379653 ns       379640 ns         1844
# | BM_UnorderedSet_Find_NonEmpty/long_string/4096              756648 ns       756610 ns          925
# | BM_UnorderedSet_Find_NonEmpty/long_string/8192             1510045 ns      1509964 ns          464
# | BM_UnorderedSet_Find_NonEmpty/long_string/16384            3026213 ns      3026010 ns          231
# | BM_UnorderedSet_Find_NonEmpty/long_string/32768            6045257 ns      6044974 ns          116

```

No opt
```
# | --------------------------------------------------------------------------------------------------
# | Benchmark                                                        Time             CPU   Iterations
# | --------------------------------------------------------------------------------------------------
# | BM_UnorderedSet_Find_EmptyNoBuckets/long_string/1024        162638 ns       162636 ns         4304
# | BM_UnorderedSet_Find_EmptyNoBuckets/long_string/2048        323928 ns       323921 ns         2159
# | BM_UnorderedSet_Find_EmptyNoBuckets/long_string/4096        645449 ns       645442 ns         1083
# | BM_UnorderedSet_Find_EmptyNoBuckets/long_string/8192       1288309 ns      1288282 ns          544
# | BM_UnorderedSet_Find_EmptyNoBuckets/long_string/16384      2585671 ns      2585642 ns          271
# | BM_UnorderedSet_Find_EmptyNoBuckets/long_string/32768      5299328 ns      5299122 ns          135
# | BM_UnorderedSet_Find_EmptyWithBuckets/long_string/1024      169348 ns       169346 ns         4134
# | BM_UnorderedSet_Find_EmptyWithBuckets/long_string/2048      337295 ns       337280 ns         2075
# | BM_UnorderedSet_Find_EmptyWithBuckets/long_string/4096      671712 ns       671700 ns         1043
# | BM_UnorderedSet_Find_EmptyWithBuckets/long_string/8192     1340185 ns      1340169 ns          523
# | BM_UnorderedSet_Find_EmptyWithBuckets/long_string/16384    2689863 ns      2689757 ns          260
# | BM_UnorderedSet_Find_EmptyWithBuckets/long_string/32768    5378439 ns      5378379 ns          130
# | BM_UnorderedSet_Find_NonEmpty/long_string/1024              186529 ns       186524 ns         3751
# | BM_UnorderedSet_Find_NonEmpty/long_string/2048              370669 ns       370665 ns         1888
# | BM_UnorderedSet_Find_NonEmpty/long_string/4096              739087 ns       739044 ns          947
# | BM_UnorderedSet_Find_NonEmpty/long_string/8192             1476207 ns      1476178 ns          474
# | BM_UnorderedSet_Find_NonEmpty/long_string/16384            2953631 ns      2953560 ns          237
# | BM_UnorderedSet_Find_NonEmpty/long_string/32768            5902677 ns      5902474 ns          118

```



https://github.com/llvm/llvm-project/pull/126837


More information about the libcxx-commits mailing list