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 ticks
TryParse Success, 910 ticks
Parse Failed, 13685860 ticks
TryParse Failed, 716 ticks
可见,TryParse的执行效率高于Parse。
-
这是Tesla的Elon Musk现在只有0.25 BTC在2018中返回多少
2022-01-07 -
Sensex,Nifty看起来向上恢复3月;在今天的开贝尔之前了解5件事
2022-01-07 -
RIL O2C热身IPO?商业旋转铺设股权销售的方式,Ril股价可能会增加25%
2022-01-07 -
在NSE交易中再次停止?HDFC证券阻止现金交易; nse,bse说所有的操作工作
2022-01-07 -
大型外国基金流出不太可能,强势经济可以帮助中型盈利/采访
2022-01-07 -
不列颠尼亚行业评分:购买 - 利用itspeers扩大差距
2022-01-07 -
LAXMI有机IPO:通过BSE检查股票分配状态,链接intime;灰色市场溢价,列表
2022-01-07 -
政府可以使汽油变得更便宜;分析师讲述了多少消费税可以轻易
2022-01-07