c程序优化方法「如何运行一个C程序」
除string外的所有基元类型,都有两个将string类型转型为其本身类型的方法:Parse 和 TryParse。
以double类型为例,这两个方法最简单的原型为:
public static Double Parse(string s);public static bool TryParse(string s, out Double result);
两者最大的区别是:如果字符串不满足转换的要求,Parse方法将引发一个异常。TryParse方法不会引发异常,它会返回false,同时将result置为0。
调用Parse方法,如果转型失败,则要将值设定为一个初始值,同时必须要捕获异常:
var str = string.Empty;double d;try{ d = double.Parse(str);}catch (Exception ex){ d = 0;}
而引发异常的这个过程会对性能造成损耗。
从 .Net 2.0 开始,FCL开始对基元类型提供TryParse方法。下例对Parse和TryParse做个实验对比:
double result;var sw = Stopwatch.StartNew();for (int i = 0; i < 1000; i ){ try { result = double.Parse("123"); } catch { result = 0; }}sw.Stop();Console.WriteLine($"Parse Success, {sw.ElapsedTicks} ticks");sw = Stopwatch.StartNew();for (int i = 0; i < 1000; i ){ if (double.TryParse("123", out result) == false) { result = 0; }}sw.Stop();Console.WriteLine($"TryParse Success, {sw.ElapsedTicks} ticks");sw = Stopwatch.StartNew();for (int i = 0; i < 1000; i ){ try { result = double.Parse("abc"); } catch { result = 0; }}sw.Stop();Console.WriteLine($"Parse Failed, {sw.ElapsedTicks} ticks");sw = Stopwatch.StartNew();for (int i = 0; i < 1000; i ){ if (double.TryParse("abc", out result) == false) { result = 0; }}sw.Stop();Console.WriteLine($"TryParse Failed, {sw.ElapsedTicks} ticks");
输出:
Parse Success, 3663 ticksTryParse Success, 910 ticksParse Failed, 13685860 ticksTryParse Failed, 716 ticks
可见,TryParse的执行效率高于Parse。
相关文章
- 威海三角轮胎全称「威海顺安进出口贸易有限公司」
- 威海进出口额「威海进博会」
- 自学python的人怎么就业「一个月能学会python吗」
- 知名电商平台上为何会有如此诡异店铺「淘宝诡异事件」
- 推进服务业高质量「新核心项目」
- 吕德华巅峰赛2500分「吕德华最高巅峰赛多少分」
- flutter单元测试「(十六)Flutter入门学习之测试」
- 荣成跨境电商自贸港「山东自贸区」
- mysql用户权限详解「发文权限」
- 合肥瑶海区电信诈骗「警方打掉」
- linux挖矿脚本「服务器挖矿病毒」
- 舒张压心脏「收缩压和舒张压的差值」
- 外媒报道中国双十一「bang没想到外媒这样报中国人的双十一」
- 配电箱符号大全图标「电气配电箱图字母符号大全」
- 电子商务简报「10月12日」
- 皖西北跨境电商产业园开建项目「临泉皖西北跨境电商产业园」
- 来不及解释了快上车是什么梗「没有时间解释了快上车」
- 成功摧毁网络跨境赌博团伙「赌博被抓」