我正在尝试优化以下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分钟。
最佳答案
如果您使用的是.NET 4.0 Framework,则可以在以下链接中使用并行库,
http://msdn.microsoft.com/en-us/library/dd460717
对于您的情况,无论如何都需要花费时间来验证阈值。因此,利用线程或lambda表达式
关于c# - 阈值计算的优化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10946020/