Faster.Map
4.0.6
See the version list below for details.
dotnet add package Faster.Map --version 4.0.6
NuGet\Install-Package Faster.Map -Version 4.0.6
<PackageReference Include="Faster.Map" Version="4.0.6" />
<PackageVersion Include="Faster.Map" Version="4.0.6" />
<PackageReference Include="Faster.Map" />
paket add Faster.Map --version 4.0.6
#r "nuget: Faster.Map, 4.0.6"
#:package Faster.Map@4.0.6
#addin nuget:?package=Faster.Map&version=4.0.6
#tool nuget:?package=Faster.Map&version=4.0.6
Faster.Map - A collection of hashmaps (FastMap, DenseMapSIMD and DenseMap)
The goal of Faster is to provide a collection of incredible fast hashmaps that integrates into the .net framework.
About
Faster.Map is a collection of hashmaps with minimal memory overhead and incredibly fast runtime speed. See benchmarks, or try it out yourself. Faster evolved from the fact that C# dictionaries in targetframework 4.0 are terribly slow. So i decided to create my own robinhood hashmap, turns out that this hashmap even performs better than the current dictionary written in .net7.
Get Started
- Install nuget package Faster.Map to your project.
dotnet add package Faster.Map
How to use
Faster.Map provides 3 unique hashmaps:
FastMap<Tkey, TValue> is a hashmap which has incredible performance, will only work with numerical keys. Keys need to be unique. Won`t handle hashcollisions
DenseMap<Tkey, TValue> is a hashmap which can be used as a replacement to IDicionary. Default loadfactor is 0.5
DenseMapSIMD<Tkey, TValue> is a next level hashmap using simd intructions. The default loadfactor is 0.9. This allows us to store 15% more entries than a dictionary while maintaining incredible speed. This hashmap is fast and i mean mindblowing fast. DenseMapSIMD wont cache hashcodes, using types like strings actually need a wrapper that caches the hashcode. Hence using a slow hash fuction will result in a slow hashmap.
Examples
Default Example
private FastMap<uint, uint> _map = new FastMap<uint, uint>(16);
_map.Emplace(1, 50);
_map.Remove(1);
_map.Get(1, out var result);
_map.Update(1, 51);
var result = _map[1];
DenseMap Example
private DenseMap<uint, uint> _map = new DenseMap<uint, uint>(16);
_map.Emplace(1, 50);
_map.Remove(1);
_map.Get(1, out var result);
_map.Update(1, 51);
DenseMapSIMD
private DenseMapSIMD<uint, uint> _map = new DenseMapSIMD<uint, uint>(16);
_map.Emplace(1, 50);
_map.Remove(1);
_map.Get(1, out var result);
_map.Update(1, 51);
Benchmark
Retrieving a million random generated keys
| Method | Mean | Error | StdDev |
|---|---|---|---|
| SlimDictionary | 14.041 ms | 0.1952 ms | 0.1731 ms |
| Dictionary | 16.712 ms | 0.3339 ms | 0.8000 ms |
| DenseMapSIMD | 7.604 ms | 0.1050 ms | 0.0982 ms |
| DenseMap | 13.126 ms | 0.1976 ms | 0.1848 ms |
| FastMap | 9.577 ms | 0.1660 ms | 0.1386 ms |
Adding a million keys
| Method | Mean | Error | StdDev |
|---|---|---|---|
| DictionarySlim | 25.09 ms | 0.313 ms | 0.292 ms |
| Dictionary | 17.43 ms | 0.451 ms | 1.294 ms |
| DenseMapSIMD | 12.23 ms | 0.443 ms | 1.286 ms |
| FastMap | 29.38 ms | 0.603 ms | 1.298 ms |
| DenseMap | 34.86 ms | 0.768 ms | 0.914 ms |
Updating a million keys
| Method | Mean | Error | StdDev |
|---|---|---|---|
| SlimDictionary | 14.624 ms | 0.2158 ms | 0.1913 ms |
| Dictionary | 19.102 ms | 0.3739 ms | 0.7023 ms |
| DenseMapSIMD | 8.053 ms | 0.1523 ms | 0.1425 ms |
| FastMap | 9.953 ms | 0.1157 ms | 0.1082 ms |
| DenseMap | 13.793 ms | 0.1122 ms | 0.0995 ms |
Removing a million keys
| Method | Mean | Error | StdDev |
|---|---|---|---|
| SlimDictionary | 16.66 ms | 0.326 ms | 0.545 ms |
| Dictionary | 23.33 ms | 0.373 ms | 0.331 ms |
| FastMap | 17.53 ms | 0.341 ms | 0.407 ms |
| DenseMapSIMD | 14.71 ms | 0.288 ms | 0.332 ms |
| DenseMap | 25.16 ms | 0.395 ms | 0.350 ms |
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net7.0
- No dependencies.
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Faster.Map:
| Package | Downloads |
|---|---|
|
Faster.Ioc
Package Description |
|
|
UPSRestApi
UpsRestApi library for .Net used to access UPS API Catalog to browse products and view documentation. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 8.1.1 | 1,625 | 2/11/2026 |
| 8.1.0 | 815 | 1/1/2026 |
| 8.0.8 | 403 | 12/31/2025 |
| 8.0.7 | 506 | 12/28/2025 |
| 8.0.6 | 450 | 12/27/2025 |
| 8.0.5 | 435 | 12/27/2025 |
| 8.0.4 | 455 | 12/27/2025 |
| 8.0.3 | 584 | 12/23/2025 |
| 8.0.2 | 568 | 12/23/2025 |
| 8.0.1 | 603 | 12/22/2025 |
| 8.0.0 | 598 | 12/22/2025 |
| 7.1.0 | 643 | 12/22/2025 |
| 7.0.2 | 588 | 12/21/2025 |
| 7.0.1 | 2,685 | 7/27/2025 |
| 7.0.0 | 2,822 | 4/22/2025 |
| 6.1.5 | 5,762 | 2/25/2025 |
| 6.1.3 | 1,766 | 11/27/2024 |
| 6.1.2 | 395 | 11/16/2024 |
| 4.0.6 | 1,458 | 3/3/2023 |
Increase version to 4.0.6
minor bugfixes