为什么 try-catch 会加速我的 C# 代码执行?
大家好!我是一名 C# 初学者,遇到了一个非常奇怪的情况。我有一个方法,对大型数据数组执行数学运算。我注意到,如果将主循环包裹在 try-catch 中,代码执行速度比没有它更快。在 1000 万次迭代中,差异约为 15-20%。
这是一个简化的例子:
```csharp
// 慢速版本(无 try-catch)
public void ProcessWithoutTryCatch(int[] data)
{
for (int i = 0; i < data.Length; i++)
{
data[i] = data[i] * 2 + 1;
}
}
// 快速版本(有 try-catch)
public void ProcessWithTryCatch(int[] data)
{
try
{
for (int i = 0; i < data.Length; i++)
{
data[i] = data[i] * 2 + 1;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
```
我在 .NET 6 和 .NET 8 上测试过,结果稳定重复。而且异常从未被抛出——数组保证不会越界。