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并返回.

  • 相关阅读:
    window下安装nvm、node.js、npm的步骤
    命令行创建Android模拟器
    2016 JavaScript 各种排名
    js开发工作流
    javascript流行工具
    Linux下进程间通信的常用方法
    Linux下回收子进程wait函数和waitpid函数的基本使用
    Linux下exec函数族比如execve等函数的基本使用
    Linux下创建子进程fork函数等的基本使用
    vi操作键盘图
  • 原文地址:https://www.cnblogs.com/yuming1983/p/3523711.html
Copyright © 2011-2022 走看看