JS记忆优化-闭包

来源:互联网 发布:人人店微分销源码下载 编辑:程序博客网 时间:2024/05/29 14:04

对于记忆模式的优化方面,在树上看到的不错的例子!
——节省了调用函数执行的时间

一般的递归函数的调用示例如下:

 function normaldigui(){        var count=0;        var fibonacci=function(n){            count++;            return n < 2 ? 1 : fibonacci(n-1) + fibonacci(n-2);        };        for(var i=0;i<=5;i++){            document.writeln(fibonacci(i)+",,,"+count+"<br/>");        }}window.onload= function(){        var startTime,endTime;        var d= new Date();        startTime = d.getTime();        normaldigui();        var d= new Date();        endTime = d.getTime();        document.writeln(endTime-startTime);} 

最后结果:
这里写图片描述

下面是优化后的代码:

//记忆优化的示例,使用了闭包,节省了反复执行同n时的方法时间,也是对一般的递归形式进行优化function jiyi (){    var count=0;    var fibonacci = function() {        console.log(count);        var memo = [0,1];        var fib = function(n){            count++;            var result = memo[n];            if(typeof result !== 'number'){                result = fib(n-1) + fib(n-2);                memo[n] = result;            }            return result;        };        return fib;    }();    for(var i=0;i<=5;i++){        document.writeln(fibonacci(i)+",,,"+count+"<br/>");    }}window.onload= function(){    var startTime,endTime;    var d= new Date();    startTime = d.getTime();    jiyi();    var d= new Date();    endTime = d.getTime();    document.writeln(endTime-startTime);}

最后结果:
这里写图片描述

原创粉丝点击