zoukankan      html  css  js  c++  java
  • 使用yield关键字来提高性能

    比如我们在开发当中往往会遇到这样的问题:

            public List<string> FindBobs(string [] names)        

        {            

                     List<string> bobs = new List<string>();

                     foreach (var currName in names)            

          {                

            if (currName == "Bob")                    

            bobs.Add(currName);            

          }            

            return bobs;        

       }

    以上是传统做法.

    方法改进:

            public IEnumerable<string> FindBobsA(IEnumerable<string> names)
            {
                foreach (string currName in names)
                {
                    if (currName == "Bob")
                        yield return currName;
                }
            }

    我们将返回类型改为IEnumerable,并且我们使用”yield return”.注意我再也不需要创建一个List<string>

    传统的执行方法

    1. 调用函数
    2. 函数执行并返回list
    3. 调用部分使用返回的list

    yield 的执行方法

    1. 调用函数
    2. 调用者请求item
    3. 下一个item返回
    4. 回到步骤2

    我们最终只需要一次“弹出”一个item,而不是创建整个list并返回.

  • 相关阅读:
    Hive的安装搭建(二)
    Hive的基本介绍(一)
    HADOOP之HDFS使用idea练习MapReduce(八)
    HADOOP之HDFS使用idea操作MapReduce(七)
    HADOOP之HDFS增加MapReduce(六)
    HADOOP之HDFS用idea操作(五)
    HADOOP之HDFS环境搭建(四)
    HADOOP之HDFS环境搭建(三)
    HADOOP之HDFS环境搭建(二)
    HADOOP之HDFS环境搭建(一)
  • 原文地址:https://www.cnblogs.com/yuming1983/p/3523711.html
Copyright © 2011-2022 走看看