我正在尝试优化以下 C# 代码,它将字节设置为0x00
或0xFF
基于阈值。
for (int i = 0; i < veryLargeNumber; i++)
{
data[i] = (byte)(data[i] < threshold ? 0 : 255);
}
Visual Studio 的性能分析器显示,上述代码相当昂贵,需要将近 8 秒的时间来计算 - 占我总处理费用的 98%。我正在处理不到一千件物品,因此加起来超过两个小时。
我认为问题与三元条件运算符有关,因为它会导致分支。我想某种纯数学运算可能会快得多,因为它对 CPU 缓存友好。
有没有办法优化这个?如果有帮助,我可以修复阈值。我认为任何高于约 7% 的性能提升都是胜利,因为总处理时间缩短了整整 10 分钟。