• 一个疑问


    摘自: more effective c#

    9. 对数组跟集合使用foreach

    循环数组或集合有三种方式:

    int[] foo = new int[100];

    第一种:

    1.  
      foreach(int i in foo)
    2.  
      {
    3.  
      // do somethings.
    4.  
      }

    第二种:

    1.  
      for (int index = 0; index < foo.Length; index++)
    2.  
      {
    3.  
      // do somethings.
    4.  
      }

    第三种:

    1.  
      int len = foo.Length;
    2.  
      for (int index = 0; index < len; index++)
    3.  
      {
    4.  
      // do somethings.
    5.  
      }

    对于C或C++,第三种循环效率最佳。但是在C#中是最差的,因为在访问每一个实际的集合时,运行时确保对每个集合的边界做检测。而将集合的大小赋值给一个变量,这使得每次进行for循环第二个条件参数总需要对边界进行两次检测。并使得JIT编译器在生成代码的时候做了更多的事情。??????????????????

    原始的C#编译器对第二种循环效率是最佳的,反而foreach循环效率差,主要是因为涉及到装箱操作。而数组类型是安全的情况下,foreach可以为数组生成不一样的IL代码,使得效率跟第二种循环一样。并且使用foreach可以写更少的代码。

  • 相关阅读:
    hadoop yarn日志分离
    hadoop优化
    hive UDF
    hadoophttpfs
    spark编译
    spark feature
    python
    python 装饰器
    HTML特殊转义字符列表
    博客园数据统计
  • 原文地址:https://www.cnblogs.com/timeObjserver/p/9661005.html
Copyright © 2020-2023  润新知