由于超线程,我有一台带有 4 个逻辑处理器的双核机器。我正在 C# 中执行 SHA1 前映像蛮力测试。在每个线程中,我基本上都有一个 for 循环并计算 SHA1 哈希,然后将哈希与我要查找的内容进行比较。我确保所有线程都以完全分离的方式执行。它们之间没有共享内存。(除了一个变量:长计数,我在每个线程中使用以下方法递增:
System.Threading.Interlocked.Increment(ref count);
我得到大约 100 万个 sha1/s 的 2 个线程和 130 万个 sha1/s 的 4 个线程。我不明白为什么在这种情况下我会从 HT 获得 30% 的奖励。两个核心都应该忙着做他们的事情,所以将线程数增加到 2 个以上应该不会给我带来任何好处。谁能解释为什么?