zoukankan      html  css  js  c++  java
  • 一个疑问

    摘自: 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可以写更少的代码。

  • 相关阅读:
    校赛writeup
    memory-300——Jarvis OJ
    校赛_warmup_pwn
    sctf
    iscc-pwn1
    level3-64——Jarvis OJ
    JarvisOJ——level2
    JarvisOJ——guestbook
    Javris oj——level0
    linux 服务器 tomcat环境部署出错 重启
  • 原文地址:https://www.cnblogs.com/timeObjserver/p/9661005.html
Copyright © 2011-2022 走看看