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

  • 相关阅读:
    WinForm窗口间传值
    如何自定义标签
    oracle数据库开启的时候 是先开监听还是先开主服务,关数据库的时候呢???
    oracle 10g 安装时字符集的选择,和后边的修改
    Oracle数据库安装及配置(一)
    Win7下完全卸载Oracle 11g的步骤
    Oracle创建表空间、创建用户以及授权
    ORACLE创建表空间、创建用户、更改用户默认表空间以及授权、查看权限
    Linux 常用命令集合
    Java之JSP和Servlet基础知识
  • 原文地址:https://www.cnblogs.com/kiracn/p/1660441.html
Copyright © 2011-2022 走看看