• tryParse, try/catch(Parse), Convert比较


    只是一个别人写的文章精简一下,原文在这里:http://blogs.msdn.com/ianhu/archive/2005/12/19/505702.aspx

    话不多,直接上代码:

    代码
    private List<Int32> TestParse(String[] strings)

    {

    Int32 intValue;

    List
    <Int32> intList = new List<int>();

     

    for (int i = 0; i < 5000000; i++)

    {

    intList.Clear();

     

    foreach (String str in strings)

    {

    try

    {

    intValue 
    = Int32.Parse(str);

    intList.Add(intValue);

    }

     

    catch (System.ArgumentException)

                         { }

     

                         
    catch (System.FormatException)

                         { }

     

                         
    catch (System.OverflowException)

                 { }

    }

     

    }

     

    return intList;

    }

     

    private List<Int32> TestTryParse(String[] strings)

    {

    Int32 intValue;

    List
    <Int32> intList = new List<int>();

    Boolean ret;

     

    for (int i = 0; i < 5000000; i++)

    {

    intList.Clear();

     

    foreach (String str in strings)

                         {

                               ret 
    = Int32.TryParse(str, out intValue);

                         
    if (ret)

                         {

                                      intList.Add(intValue);

                         }

                 }

           }

     

           
    return intList;

    }

     

    private List<Int32> TestConvert(String[] strings)

    {

    Int32 intValue;

    List
    <Int32> intList = new List<int>();

     

    for (int i = 0; i < 5000000; i++)

    {

    intList.Clear();

     

    foreach (String str in strings)

    {

    try

    {

    intValue 
    = Convert.ToInt32(str);

    intList.Add(intValue);

    }

     

    catch (System.FormatException)

    { }

     

    catch (System.OverflowException)

    { }

    }

    }

     

    return intList;

    }

    测试正确数据:

    { "123", "4567", "7890", "1", "1231280", "10" }.

     

    三者性能差不多。

    测试错误数据:

    { "12345", null, "123", "1324dfs", "51235", String.Empty, "43", "4123412341234123412341234123412341234123" }.

     

    如图所见:tryParse>Convert>Parse

    原因在于Convert跟Parse要进行异常处理,尤其是Parse的ArgumentNullException处理开销很大。

    总结:

    在没特殊需求的情况下强烈建议使用tryParse

  • 相关阅读:
    PrefixSpan序列模式挖掘算法
    PrefixSpan序列模式挖掘算法
    CBA算法---基于关联规则进行分类的算法
    CBA算法---基于关联规则进行分类的算法
    CBA算法---基于关联规则进行分类的算法
    RoughSets属性约简算法
    RoughSets属性约简算法
    hdu Proud Merchants
    hdu I NEED A OFFER!
    hdu Watch The Movie
  • 原文地址:https://www.cnblogs.com/kiracn/p/1660441.html
Copyright © 2020-2023  润新知