Skip to content

Conversation

@bitfaster
Copy link
Owner

@bitfaster bitfaster commented Jul 24, 2022

Use ValueTask for async methods, eliminate Task allocs.

Before:

Method Runtime Mean Error StdDev Code Size Gen 0 Allocated
GetOrAddAsync .NET 6.0 84.79 ns 1.618 ns 4.059 ns 1,683 B 0.0167 72 B
AtomicGetOrAddAsync .NET 6.0 77.26 ns 0.587 ns 0.549 ns 1,847 B 0.0167 72 B
GetOrAddAsync .NET Framework 4.8 172.44 ns 1.518 ns 1.268 ns 12,202 B 0.0184 80 B
AtomicGetOrAddAsync .NET Framework 4.8 178.61 ns 1.501 ns 1.253 ns 12,202 B 0.0184 80 B

After:

Method Runtime Mean Error StdDev Code Size Allocated
GetOrAddAsync .NET 6.0 79.65 ns 0.754 ns 0.668 ns 1,935 B -
AtomicGetOrAddAsync .NET 6.0 83.76 ns 0.465 ns 0.388 ns 2,099 B -
GetOrAddAsync .NET Framework 4.8 173.62 ns 0.915 ns 0.811 ns 12,513 B -
AtomicGetOrAddAsync .NET Framework 4.8 183.51 ns 1.019 ns 0.903 ns 12,513 B -

@bitfaster bitfaster merged commit 0a53611 into main Jul 24, 2022
@bitfaster bitfaster deleted the users/alexpeck/valuetask2 branch July 24, 2022 19:43
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