3

https://github.com/joeyrobert/bloomfilterは、パフォーマンス キラーであるハッシュ関数に Random クラスを使用します。
私がやろうとしているのは、ジェネリック引数(T)の代わりにバイト[]を使用してクラスを入力し、取り除くことです

    private int Hash(T item) {
        return item.GetHashCode();
    }

_random.Next(_bitSize)パフォーマンスが大幅に向上することはわかっていますが、ここを置き換える方法がわかりません。

#region Public Methods
/// <summary>
/// Adds an item to the bloom filter.
/// </summary>
/// <param name="item">Item to be added</param>
public void Add(T item)
{
    _random = new Random(Hash(item));

    for (int i = 0; i < _numberOfHashes; i++)
        _bitArray[_random.Next(_bitSize)] = true;
}

1ビットごとに数千のCPUサイクルを必要としない、遅延のないコード行を使用します。

コードには他にも多くの問題があり、コードをより高速/安全にすることができます.私はそれらを(ほとんど)修正し、変更をプッシュする前に最後の問題に行き詰まりました.
どんな助けでも本当に感謝しています。

4

2 に答える 2