使用字符串键进行哈希处理比使用数字键进行哈希处理慢吗? (C#)

问题描述 投票:0回答:1

我一直在研究我的小型国际象棋引擎,并且我有用于三重检测的哈希表。

我想实现 Zobrist 哈希,但我只是为占位符创建了一个字符串哈希键。 但看起来真的很慢,1 深度搜索需要整整 1 毫秒。 没有三重检测的 Perft 函数比这快得多..

使用字符串键进行散列真的很慢吗?

c# hash chess
1个回答
0
投票

是的,散列字符串的时间取决于其长度,而固定大小的数字将花费恒定的时间。即使实际数据量相同,处理字符串也可能会产生更多开销。

这是我第一次听说“Zobrist”,但它似乎是基于异或在一起的“位串”。使用实际的字符串而不是 ulong 来表示这样的位串会慢得多,因为没有简单的方法将字符串异或在一起。

但是性能很复杂,要接近硬件的实际理论性能通常需要对硬件、编译器和其他工具都有深入的了解。我建议使用分析器,因为这应该告诉您实际需要时间的内容

© www.soinside.com 2019 - 2024. All rights reserved.