zoukankan      html  css  js  c++  java
  • 常用测试数据。

    先有一个关于 Try Catch 的文章:http://www.cnblogs.com/wlb/archive/2009/12/18/1626816.html

    我所考虑的问题是,在什么数量级上,算是性能瓶颈。暂不考虑IO,CPU,内存的占用率。

    关于反射,公认的,反射是影响性能的。大家喜欢用,而避免滥用。

    以 万次 循环为例 (测试环境: OpenSuse11.2 64 Mono2.6 ,Core2 8300 2.4 2G ):

    Test test =new Test() ;
    test.Str
    ="hello" ;

    System.Diagnostics.Stopwatch sw
    =new System.Diagnostics.Stopwatch() ;
    sw.Start() ;
    for (int i =0; i <10000; i++) {
    test.GetType().GetProperty(
    "Str") ;
    }
    sw.Stop() ;
    Console.WriteLine (sw.ElapsedMilliseconds.ToString());

    结果:
    8-16 , 平均: 12

    Test test
    =new Test() ;
    test.Str
    ="hello" ;

    System.Diagnostics.Stopwatch sw
    =new System.Diagnostics.Stopwatch() ;
    sw.Start() ;
    for (int i =0; i <10000; i++) {
    test.GetType().GetProperty(
    "Str").GetValue(test,null) ;
    }
    sw.Stop() ;
    Console.WriteLine (sw.ElapsedMilliseconds.ToString());

    结果15
    -21 , 平均:18

    System.Diagnostics.Stopwatch sw
    =new System.Diagnostics.Stopwatch() ;
    sw.Start() ;
    for (int i =0; i <10000; i++) {
    DateTime dt
    = DateTime.Now ;
    }
    sw.Stop() ;
    Console.WriteLine (sw.ElapsedMilliseconds.ToString());

    结果:
    20-30,平均:25.

    Test test
    =new Test() ;
    test.Str
    ="hello" ;

    System.Diagnostics.Stopwatch sw
    =new System.Diagnostics.Stopwatch() ;
    sw.Start() ;
    for (int i =0; i <10000; i++) {
    test.GetType().GetProperty(
    "Str").SetValue(test,i.ToString(),null) ;
    }
    sw.Stop() ;
    Console.WriteLine (sw.ElapsedMilliseconds.ToString());

    结果:
    3040,平均: 35.

    Test test
    =new Test() ;
    test.Str
    ="hello" ;

    System.Diagnostics.Stopwatch sw
    =new System.Diagnostics.Stopwatch() ;
    sw.Start() ;
    for (int i =0; i <10000; i++) {
    test.GetType().GetMethod(
    "Mm").Invoke(test,newobject[]{i}) ;
    }
    sw.Stop() ;
    Console.WriteLine (sw.ElapsedMilliseconds.ToString());


    //
    publicclass Test
    {
    publicstring Str {get;set;}
    publicstring Mm(int i)
    {
    return i.ToString() +"!" ;
    }
    }

    结果:
    3040 平均: 35

    System.Diagnostics.Stopwatch sw
    =new System.Diagnostics.Stopwatch() ;
    sw.Start() ;

    decimal m =decimal.MaxValue ;
    for (int i =0; i <10000; i++) {
    try{
    int w = Convert.ToInt32( m ) ;
    }
    catch{
    }
    }
    sw.Stop() ;
    Console.WriteLine (sw.ElapsedMilliseconds.ToString());


    执行时间为:
    40-60, 平均 50


    System.Diagnostics.Stopwatch sw
    =new System.Diagnostics.Stopwatch() ;
    sw.Start() ;
    for (int i =0; i <10000; i++) {
    new Random() ;
    }
    sw.Stop() ;
    Console.WriteLine (sw.ElapsedMilliseconds.ToString());

    执行时间:
    60-70, 平均: 65
    调用方法 Mono 。NET
    GetType().GetProperty 12 5
    GetType().GetProperty("Str").GetValue 18 13
    DateTime.Now 25 5
    GetType().GetProperty("Str").SetValue 35 21
    GetType().GetMethod("Mm").Invoke 35 19
    Convert.ToInt32 50 622
    Random 65 58

    个人认为,标准线应该在 DateTime.Now 上。 即: 万次执行小于 25 毫秒 可以不考虑。

    alarm   作者:NewSea     出处:http://newsea.cnblogs.com/    QQ,MSN:iamnewsea@hotmail.com

      如无特别标记说明,均为NewSea原创,版权私有,翻载必纠。欢迎交流,转载,但要在页面明显位置给出原文连接。谢谢。
  • 相关阅读:
    【bzoj3566】[SHOI2014]概率充电器 树形概率dp
    【bzoj1419】Red is good 期望dp
    【bzoj2698】染色 期望
    【bzoj2134】单选错位 期望
    【bzoj1022】[SHOI2008]小约翰的游戏John 博弈论
    【bzoj3170】[Tjoi 2013]松鼠聚会 旋转坐标系
    【bzoj2338】[HNOI2011]数矩形 计算几何
    【bzoj2085】[Poi2010]Hamsters Hash+倍增Floyd
    【bzoj1014】[JSOI2008]火星人prefix Splay+Hash+二分
    【bzoj2795】[Poi2012]A Horrible Poem Hash+分解质因数
  • 原文地址:https://www.cnblogs.com/newsea/p/1656796.html
Copyright © 2011-2022 走看看