zoukankan      html  css  js  c++  java
  • C# TryParse比Parse效率更高

    除了string外的所有基元类型都有两个将字符串转型为本身的方法:Parse和TryParse。

    Parse方法:如果字符串格式不满足转换要求,会引发一个一次异常。

    TryParse方法:如果字符串格式不满足转换要求,会返回false,同时将接收的变量置为初始值。

    例:

    1 public static double Parse(string s);
    2 public static bool TryParse(string s, out double result);

    引发异常这个过程会对性能造成损耗

    实验代码:

     1             double re;
     2             long ticks;
     3 
     4             Stopwatch sw = Stopwatch.StartNew();
     5             for (int i = 0; i < 1000; i++)
     6             {
     7                 try
     8                 {
     9                     re = double.Parse("123");
    10                 }
    11                 catch
    12                 {
    13                     re = 0;
    14                 }
    15             }
    16             sw.Stop();
    17             ticks = sw.ElapsedTicks;
    18             Console.WriteLine("double.Parse() 成功,{0} ticks", ticks);
    19 
    20             sw = Stopwatch.StartNew();
    21             for (int i = 0; i < 1000; i++)
    22             {
    23                 if (double.TryParse("123", out re) == false)
    24                 {
    25                     re = 0;
    26                 }
    27             }
    28             sw.Stop();
    29             ticks = sw.ElapsedTicks;
    30             Console.WriteLine("double.TryParse() 成功,{0} ticks", ticks);
    31 
    32             sw = Stopwatch.StartNew();
    33             for (int i = 0; i < 1000; i++)
    34             {
    35                 try
    36                 {
    37                     re = double.Parse("aaa");
    38                 }
    39                 catch
    40                 {
    41                     re = 0;
    42                 }
    43             }
    44             sw.Stop();
    45             ticks = sw.ElapsedTicks;
    46             Console.WriteLine("double.Parse() 失败,{0} ticks", ticks);
    47 
    48             sw = Stopwatch.StartNew();
    49             for (int i = 0; i < 1000; i++)
    50             {
    51                 if (double.TryParse("aaa", out re) == false)
    52                 {
    53                     re = 0;
    54                 }
    55             }
    56             sw.Stop();
    57             ticks = sw.ElapsedTicks;
    58             Console.WriteLine("double.TryParse() 失败,{0} ticks", ticks);        

    运行结果:

    double.Parse() 成功,1393 ticks
    double.TryParse() 成功,1480 ticks
    double.Parse() 失败,72487036 ticks
    double.TryParse() 失败,886 ticks

    执行成功,Parse和TryParse方法的效率在一个数量级上;执行失败;Parse方法的执行效率明显远低于TryParse方法。

    参考:《编写高质量代码改善C#程序的157个建议》陆敏技

  • 相关阅读:
    代码中莫名其妙多出的空格
    hierarchyviewer偶然不能使用的解决方法
    HierarchyView的实现原理和Android设备无法使用HierarchyView的解决方法
    Android L Ripple的使用
    Android2.2 API —— ImageView
    android:tint
    Android特效--粒子效果之雨
    Android 简单的FC
    Google开源库-Volley
    Css总结
  • 原文地址:https://www.cnblogs.com/xuyouyou/p/13151387.html
Copyright © 2011-2022 走看看