会尝试捕获-导致CPU使用率过高吗?

安纳普

我正在总结守则。以下代码在一个foreach循环中迭代了将近4000次在我的本地IIS上,它正在运行,但是在Production Cloud Server上,整个应用程序崩溃了。

try
{
    cell.Value = decimal.Parse(dr[dc.ColumnName].ToString());
}
catch
{
    cell.Value = dr[dc.ColumnName];
}

我的查询是:-使用上面的Catch块会导致CPU使用率过高吗?

作为补充信息:-Catch达到4000次

彼得·B

代码中包含try-catch可以IMO的性能损失降到最低,但可以忽略不计:每次“ try-that-didnt-catch”(使用在我的Core i7 x64上构建的.NET 4.6.1 Release)在0.001 µs范围内机)。

但是,如果必须捕获,那么它的成本确实要高得多:每个“必须捕获的尝试”12.5 µs的范围内(使用在我的Core i7机器上构建的.NET 4.6.1 Release) 。直到达到成千上万个捕获的异常级别,您仍然可能不会注意到。

总而言之,如果可能的话,最好避免抛出和捕捉,并且可以通过使用decimal.TryParse做到这一点

现在,您必须单独进行null检查,否则.ToString()可能仍然会使它崩溃。

重写代码:

var v = dr[dc.ColumnName];
var s = v?.ToString(); // or you might use: var s = v as string;
if (s != null && decimal.TryParse(s, out decimal d))
    cell.Value = d;
else
    cell.Value = v;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么从无限循环切换到TimerTask会导致CPU使用率下降?

Golang stdin循环上的CPU使用率过高

lpop为什么会增加Redis CPU使用率?

Java线程:CPU使用率过高

观看'./**/*.js'会导致CPU使用率过高

线程阻塞会导致CPU消耗过高吗

并行性会导致100%CPU使用率吗?

如何停止Facebook搜寻器导致CPU使用率过高

OpenCV Polylines CPU使用率过高

为什么Iceweasel中的Stackoverflow会导致Xorg的CPU使用率过高?

如何解决CPU使用率过高的问题?

为什么USB 3.0端口会导致CPU使用率过高?

Dropbox导致Mac OS X 10.8.2(Mountain Lion)上的CPU使用率过高

“系统”和“系统中断”导致的CPU使用率过高(由ACPI.sys引起)

WinAPI:在WM_PAINT中省略BeginPaint和EndPaint会导致100%CPU使用率

死锁会导致CPU使用率过高吗?

锁定游戏更新速度会导致CPU使用率过高。不执行任何操作时如何使线程休眠?

Java:游戏循环-CPU使用率过高

哪些图形设置会影响CPU使用率?

尝试获取Bash中的CPU总使用率

Nodemon这可能会导致较高的cpu使用率。减少使用--watch

向下滚动Facebook网页会导致CPU使用率过高正常吗?

为什么尝试捕获PID会导致我的Shell脚本神秘地终止?

尝试/捕获捕获承诺会拒绝...可以解决这个问题吗?

我怎么知道哪个IRQ导致CPU使用率过高

HPC群集上的并行作业会导致CPU使用率波动

尝试触发 Mobx 操作会导致未捕获的类型错误

为什么 EC2 服务器上的多个 Ruby 进程会导致 100% 的 CPU 使用率?

在 Qlabel 中使用 QTime 和 Qtimer 作为时钟导致 CPU 使用率过高