gpt4 book ai didi

c# - 在 C# 中实现稀疏数组/将整数映射到特定桶/范围数字的最快方法

转载 作者:可可西里 更新时间:2023-11-01 08:45:46 25 4
gpt4 key购买 nike

我最初的问题是我需要在 C# 中实现一个非常快速的稀疏数组。最初的想法是使用正常的 Dictionary<uint, TValue>并将其包装在我自己的类中以仅公开 TValue类型参数。事实证明这很慢。

所以我的下一个想法是将所需范围(UInt32.MinValueUInt32.MaxValue)中的每个整数映射到某个大小的桶并使用它。所以我正在寻找一种将无符号整数 X 映射到桶 Y 的好方法,例如:

将数字 0-1023 映射到 8 个不同的桶,每个桶包含 128 个数字,0-127、128-255。

但如果有人有更好的方法在 C# 中实现快速稀疏数组,那也将不胜感激。

最佳答案

我也注意到 Dictionary<K,V>当键是整数时很慢。我不知道为什么会这样,但我为 uint 编写了一个更快的哈希表实现和 ulong键:

警告/缺点:

  • 64 位的(键为 ulong )是通用的,但另一个(键为 uint )假定为 int值(value)观,因为那是我当时所需要的;我相信您可以轻松实现此通用。

  • 目前,容量永远决定哈希表的大小(即它不会增长)。

关于c# - 在 C# 中实现稀疏数组/将整数映射到特定桶/范围数字的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3798178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com