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

  • 相关阅读:
    input 去除边框
    分页封装
    python后端继承序列化,不同访问形式返回不同结果
    解决vue前端不显示自定义字段
    Vue 获取后端多对多关联表信息
    vue 前段增删改查代码规范
    前段增删改查的应用
    ant-design-vue基础
    python 后端 数据库的创表及增删改查 简单使用
    配置Uwsgi+Nginx+Django+Vue
  • 原文地址:https://www.cnblogs.com/kiracn/p/1660441.html
Copyright © 2011-2022 走看看