refactor: use popcnt
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
using System.Numerics;
|
||||||
using ChatTwo.Code;
|
using ChatTwo.Code;
|
||||||
using ChatTwo.GameFunctions.Types;
|
using ChatTwo.GameFunctions.Types;
|
||||||
using ChatTwo.Util;
|
using ChatTwo.Util;
|
||||||
@@ -383,9 +384,9 @@ internal sealed unsafe class Chat : IDisposable {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var bits = NumUtil.NumberOfSetBits((uint) modifier);
|
var bits = BitOperations.PopCount((uint) modifier);
|
||||||
if (!turnedOff.TryGetValue(key, out var previousBits) || previousBits.Item1 < bits) {
|
if (!turnedOff.TryGetValue(key, out var previousBits) || previousBits.Item1 < bits) {
|
||||||
turnedOff[key] = (bits, toIntercept);
|
turnedOff[key] = ((uint) bits, toIntercept);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -301,9 +301,9 @@ internal sealed class ChatLog : IUiComponent {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var bits = NumUtil.NumberOfSetBits((uint) modifier);
|
var bits = BitOperations.PopCount((uint) modifier);
|
||||||
if (!turnedOff.TryGetValue(key, out var previousBits) || previousBits.Item1 < bits) {
|
if (!turnedOff.TryGetValue(key, out var previousBits) || previousBits.Item1 < bits) {
|
||||||
turnedOff[key] = (bits, toIntercept);
|
turnedOff[key] = ((uint) bits, toIntercept);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
namespace ChatTwo.Util;
|
|
||||||
|
|
||||||
internal static class NumUtil {
|
|
||||||
internal static uint NumberOfSetBits(uint i) {
|
|
||||||
i -= (i >> 1) & 0x55555555;
|
|
||||||
i = (i & 0x33333333) + ((i >> 2) & 0x33333333);
|
|
||||||
return (((i + (i >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user