美文网首页javaScript学习JavaScript深究JavaScript
JavaScript Lazy Evaluation 惰性求值

JavaScript Lazy Evaluation 惰性求值

作者: jProvim | 来源:发表于2015-10-08 12:10 被阅读339次

什麼是Lazy Evaluation (惰性求值)?

簡單點說就是, 按需索取, 能不多做事, 絕對不做.

好處, 提高Performance: Code Execution, Memory Usage

例子

比如我們生成100個值

var oneHunderItems = function(end){
     var results = [];
     for(var i=0; i< end; ++i){
          results.push(i);
     }
     return results;
}

雖然生成了100個, 但是我們實際就需要前10個. 怎麼辦? 造成了Memory Usage的浪費.
所以, Lazy Evaluation 就來了幫忙了.

我們實際想要的是如下結果:

oneHunderItems.take(10).each(doWork);

var threshold = 10;
for (var i = 0; i < 100; i++) {
  if (i >= threshold) {
      break;
  }
  else {
    var item = items[i];
    // do work on item
     doWork(item)
  }
}

更誇張點, 來個 Infinity. 懂了原理的我們也是不怕的 :)

當然了, 這個寫法很... Not reusable. 所以推薦大家看看Lazy.js

Reference:

  1. Optimizing your JavaScript with Functional Programming
  2. Simple JavaScript implementation of cons list with lazy evaluation of map, filter etc.
    Raw
  3. Into the Land of Functional Programming with JavaScript

相关文章

  • JavaScript Lazy Evaluation 惰性求值

    什麼是Lazy Evaluation (惰性求值)? 簡單點說就是, 按需索取, 能不多做事, 絕對不做. 好處,...

  • Swift Collection 中的 lazy 作用

    惰性求值 惰性求值常见于函数式编程中,也有人把惰性求值翻译成延迟求值(Lazy Evaluation)。它的目的是...

  • 【r<-高级】内部机制

    内容: 惰性求值 (Lazy evaluation)复制-修改机制 (Copy-on-modify mechani...

  • 4.2 Variations on a Scheme: Lazy

    在元循环求值器的基础上,我们能够实现变体形式 惰性求值(lazy evaluation) 器。惰性求值器能够将程式...

  • 惰性计算辨析

    原文其实应该叫惰性求值(Lazy Evaluation)比较标准。 就在大约一两个小时之前,有一位我博客的读者在评...

  • 借助 Proxy 实现回调函数执行计数

    背景 最近在做一个简化版的 Lazy.js:simply-lazy,目的是深入分析 Lazy.js 中惰性求值的实...

  • 惰性求值,懒执行,Lazy Evaluations

    最近看webflux的时候,补习一些基础(自己原因,之前没有做)发现java Stream流操作,类似map(i ...

  • 充分利用Lazy evaluation的特性

    Lazy evaluation:延迟计算,惰性计算,指的是仅仅在真正需要执行的时候才计算表达式。好处: 避免不必要...

  • HotSpot

    HotSpot采用了惰性评估(Lazy Evaluation)的做法,根据二八定律,消耗大部分系统资源的只有那一小...

  • lazy.js 惰性求值实现分析

    背景:惰性求值? 来看一个 lazy.js 主页提供的示例: 上例中,要在非常非常多的人里面,找出 5 个以 Sm...

网友评论

    本文标题:JavaScript Lazy Evaluation 惰性求值

    本文链接:https://www.haomeiwen.com/subject/darncttx.html