Skip to content

Conversation

@mitikov
Copy link
Contributor

@mitikov mitikov commented Jul 19, 2025

Got rid of LINQ if favor of hand-baked cycles.

@ogxd
Copy link
Contributor

ogxd commented Jul 19, 2025

I just added a quick benchmark on that Create method

Before

| Method | FileName             | Mean         | Error       | StdDev      | Allocated |
|------- |--------------------- |-------------:|------------:|------------:|----------:|
| Create | census-income.zip    | 278,355.2 us | 2,380.80 us | 2,110.52 us | 273.89 MB |
| Create | census1881_srt.zip   |  27,132.1 us |   169.16 us |   141.26 us |  28.08 MB |
| Create | census1881_srt.zip   |  29,249.5 us |   376.26 us |   351.96 us |  28.08 MB |
| Create | census1881.zip       |  45,001.6 us |   469.50 us |   439.17 us |  42.22 MB |
| Create | dimension_003.zip    | 131,419.1 us |   810.15 us |   757.81 us | 184.28 MB |
| Create | dimension_008.zip    | 104,615.3 us |   380.61 us |   317.83 us | 124.25 MB |
| Create | dimension_033.zip    | 143,935.7 us |   427.65 us |   357.11 us | 162.89 MB |
| Create | uscensus2000.zip     |     489.7 us |     1.95 us |     1.73 us |   1.11 MB |
| Create | weath(...)t.zip [23] | 666,313.1 us | 4,932.45 us | 4,372.48 us | 637.36 MB |
| Create | weather_sept_85.zip  | 545,422.4 us | 2,982.58 us | 2,328.60 us | 511.32 MB |
| Create | wikil(...)t.zip [26] |   9,984.2 us |    32.11 us |    28.47 us |  12.76 MB |
| Create | wikil(...)s.zip [22] |  10,433.0 us |    42.52 us |    33.19 us |  12.23 MB |

After

| Method | FileName             | Mean         | Error       | StdDev      | Allocated   |
|------- |--------------------- |-------------:|------------:|------------:|------------:|
| Create | census-income.zip    |  72,622.8 us | 1,272.57 us | 1,190.36 us | 42102.72 KB |
| Create | census1881_srt.zip   |   6,658.0 us |   128.93 us |   143.31 us |  4406.49 KB |
| Create | census1881_srt.zip   |   6,562.0 us |    26.92 us |    22.48 us |  4406.39 KB |
| Create | census1881.zip       |   8,383.3 us |    87.51 us |    73.08 us |  6127.71 KB |
| Create | dimension_003.zip    |  31,738.7 us |   131.14 us |   116.26 us | 29867.13 KB |
| Create | dimension_008.zip    |  25,979.5 us |   126.73 us |    98.94 us | 19712.22 KB |
| Create | dimension_033.zip    |  38,375.0 us |   208.32 us |   194.86 us | 24818.25 KB |
| Create | uscensus2000.zip     |     106.4 us |     0.97 us |     0.86 us |   309.12 KB |
| Create | weath(...)t.zip [23] | 169,834.2 us | 3,011.43 us | 2,351.13 us | 98784.34 KB |
| Create | weather_sept_85.zip  | 131,347.5 us |   497.40 us |   440.93 us | 78654.95 KB |
| Create | wikil(...)t.zip [26] |   2,493.9 us |    14.76 us |    11.52 us |  2038.13 KB |
| Create | wikil(...)s.zip [22] |   1,973.9 us |    11.19 us |     9.92 us |  1854.96 KB |

The results are so much better in all aspects that I think we can even drop the CreateOld tests and merge (it was interesting to have them nonetheless to ensure we had no regression)

@mitikov
Copy link
Contributor Author

mitikov commented Jul 21, 2025

@ogxd cool, gogogogo

@ogxd ogxd merged commit 26d1d46 into equativ:main Jul 21, 2025
1 check passed
@ogxd
Copy link
Contributor

ogxd commented Jul 21, 2025

Merged. I just published a new version: https://www.nuget.org/packages/Equativ.RoaringBitmaps/0.1.5

@mitikov mitikov deleted the codex/refactor-create-to-sort-and-group-in-one-pass branch July 28, 2025 08:29
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