c# – 来自太多捕获错误的糟糕表现?
发布时间:2020-12-15 23:55:11 所属栏目:百科 来源:网络整理
导读:我在C#(.NET 2.0)中有一个大项目,它包含由SubSonic生成的非常大的代码块.像这样的尝试捕获导致可怕的性能打击? for (int x = 0; x identifiers.Count; x++) {decimal target = 0; try { target = Convert.ToDecimal(assets[x + identifiers.Count * 2]); //
我在C#(.NET 2.0)中有一个大项目,它包含由SubSonic生成的非常大的代码块.像这样的尝试捕获导致可怕的性能打击?
for (int x = 0; x < identifiers.Count; x++) {decimal target = 0; try { target = Convert.ToDecimal(assets[x + identifiers.Count * 2]); // target % } catch { targetEmpty = true; }} 发生的事情是,如果传入的给定字段不是可以转换为十进制的字段,则会设置一个标志,然后在记录中进一步使用该标志以确定其他内容. 问题是,当我通过30k记录进行解析时,应用程序实际上会抛出数以万计的异常.整个过程花费了大约10分钟的时间来完成所有事情,我的总体任务是改善一些时间,如果这是一个糟糕的设计理念,这似乎很容易挂掉水果. 任何想法都会有所帮助(善良,这是一个悲惨的一天) 谢谢, 解决方法
使用控制流的异常通常是一种不好的做法(正是因为你观察到的效率很低).您需要什么类型的数据才能转换为十进制?如果输入不是预期的格式,你可以使用TryParse方法或其他不抛出异常的方法吗?
如果您正在解析字符串,因为它通过返回false报告失败, decimal d; if (Decimal.TryParse(str,out d)) // Ok,use decimal 'd' else // Failed - do something else (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |