制作多个字符串的哈希键的最快方法

Par*_*ken 1 c# performance

历史原因很长,但问题很简单。有 3 个字符串,我需要缓存匹配值。为了获得快速缓存,我使用以下代码:

public int keygen(string a, string b, string c)
    {
        var x = a + "@@" + b + "@@" + c;
        var hash = x.GetHashCode();
        return hash;
    }
Run Code Online (Sandbox Code Playgroud)

(请注意,字符串a, b,c不包含代码"@@")它本身的缓存只是一个Dictionary<int, object>

我知道存在散列键可能不唯一的风险,但除此之外:

有谁知道制作 int 键的更快方法吗?(在 C# 中)此操作大约占用总 CPU 时间的 15%,并且这是一个长时间运行的应用程序。

我尝试了几种实现,但未能找到更快的实现。

Ran*_*832 5

你应该使用一个Dictionary<Tuple<string,string,string>, object>. 那么您不必担心非唯一性,因为词典会为您处理它。