zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    大数据、数据挖掘在交通领域的应用
    浅谈 kubernetes service 那些事(上篇)
    Docker中搭建zookeeper集群
    【kudu pk parquet】runtime filter实践
    【大数据之数据仓库】选型流水记
    【大数据之数据仓库】安装部署GreenPlum集群
    【大数据之数据仓库】GreenPlum优化器对比测试
    【大数据之数据仓库】GreenPlum PK DeepGreen(TPCH)
    【大数据之数据仓库】HAWQ versus GreenPlum
    用 PS 调整服务器时间
  • 原文地址:https://www.cnblogs.com/kiracn/p/1660441.html
Copyright © 2011-2022 走看看