Skip to content

Releases: CombinationAB/Combination.StringPools

2.0.0

04 Jul 15:52
05eba99
Compare
Choose a tag to compare

What's Changed

  • Use variable-size integer for size prefix by @rickardp in #30
  • [Breaking change] Remove deduplicationTableBits parameter by @rickardp in #36

Full Changelog: 1.3.0...2.0.0

2.0.0-rc1

03 Jul 07:39
f631409
Compare
Choose a tag to compare
2.0.0-rc1 Pre-release
Pre-release

What's Changed

  • Use variable-size integer for size prefix by @rickardp in #30
  • [Breaking change] Remove deduplicationTableBits parameter by @rickardp in #36

Full Changelog: 1.3.0...2.0.0-rc1

1.3.0

03 Jul 07:25
cf78b45
Compare
Choose a tag to compare

Summary

Performance optimizations, net8 upgrade and a bug fix to adding strings to a pool from multiple threads at the same time,

What's Changed

  • [GP-2870] Update to .Net8 by @KimPlaybit in #35
  • Fixed possible threading issue by @rickardp in #31
  • Removed .NET 7 package, fixed .NET 8 build by @rickardp in #34
  • Improved performance by using a circular dynamically sized dup table by @rickardp in #32

New Contributors

Full Changelog: 1.2.0...1.3.0

Changed to a more efficient hash algorithm

01 Jul 17:55
0902b30
Compare
Choose a tag to compare

Based on benchmarking, using XXHash3 instead of Fowler-Noll as a hash algorithm.

Fowler–Noll–Vo 1a

Method String Mean Error StdDev
Hash Some ASCII string 21.12 ns 0.293 ns 0.245 ns
Hash Some ünicöde string 30.84 ns 0.278 ns 0.232 ns

XxHash64

Method String Mean Error StdDev
Hash Some ASCII string 14.59 ns 0.127 ns 0.112 ns
Hash Some ünicöde string 16.09 ns 0.104 ns 0.086 ns

XxHash3

Method String Mean Error StdDev
Hash Some ASCII string 12.82 ns 0.096 ns 0.085 ns
Hash Some ünicöde string 12.96 ns 0.247 ns 0.231 ns

Avoid IndexOutOfRangeException

19 Mar 13:29
3897ba2
Compare
Choose a tag to compare

Avoiding a negative index by making sure long doesn't get downcast to int during multiplication and assignment.

PooledUtf8String.Empty == default(PooledUtf8String)

27 Apr 16:15
a85e9c6
Compare
Choose a tag to compare

Using the default keyword with PooledUtf8String now returns an object that is the same as PooledUtf8String.Empty.

Implement IComparable

16 Feb 23:54
Compare
Choose a tag to compare
1.1.2

Implement IComparable

Zero alloc UTF-8 insertion

16 Feb 17:12
Compare
Choose a tag to compare

Allows the insertion of raw UTF-8 sequences into the string pool, without round tripping to .NET strings. Also allows arbitrary sequences of char.

Improved GetHashCode performance

15 Feb 12:47
Compare
Choose a tag to compare
1.0.2

Use bytes for hash code generation instead of creating string and cal…

Performance optimizations

14 Feb 14:38
Compare
Choose a tag to compare

Avoid unnecessary memory allocations on Add