美文网首页
javascript记忆优化

javascript记忆优化

作者: 西天路上少几人 | 来源:发表于2016-01-01 16:43 被阅读138次

这个应该算是函数式编程吧。

斐波那契数列的一般版本

这个版本会进行很多无用的重复的运算,循环10次元算次数多达453次。

var fibonacci = function(n){
    console.log(j++);
    return n<2?n:fibonacci(n-1)+fibonacci(n-2);
};
var j = 1;
for(var i = 0;i <= 10;i+=1)
{
    console.log('//'+i+': '+fibonacci(i));
}

通过记忆改编的版本

首先用一个数组保存每次的运算结果,在每次调用之前先进行查找,去除了冗余的运算。

var mem_fibonacci = function(){
    var memo = [0,1];
    var fib = function(n){
        var result = memo[n];
        if (typeof(result) !== 'number') {
            result = fib(n-1)+fib(n-2);
            memo[n] = result;
        };
        return result;
    };
    return fib;
};
var test = mem_fibonacci();

for(var i = 0;i <= 10;i+=1)
{
    console.log('//'+i+': '+test(i));
}

生产函数的函数

var memoizer = function(memo,fundamental){
    var shell = function(n){
        var result = memo[n];
        if (typeof(result) !== 'number') {
            result = fundamental(shell,n);
            memo[n] = result;
        }
        return result;
    }
    return shell;
}

使用记忆函数生成斐波那契函数

var memo = [0,1];
var func = function(shell,n){
    return shell(n-1)+shell(n-2);
}
var de_mem_fibonacci = memoizer(memo,func);
for(var i = 0;i <= 10;i+=1)
{
    console.log('//'+i+': '+de_mem_fibonacci(i));
}

使用记忆函数生成阶乘函数

memo = [1,1];
func = function(shell,n){
    return n * shell(n-1);
}

var factorial =  memoizer(memo,func);
console.log('factorial');
for(var i = 1;i <= 10;i+=1)
{
    console.log('//'+i+': '+factorial(i));
}   

以上来自javascript语言精粹。

相关文章

  • javascript记忆优化

    这个应该算是函数式编程吧。 斐波那契数列的一般版本 这个版本会进行很多无用的重复的运算,循环10次元算次数多达45...

  • 性能优化

    内容优化 服务器优化 Cookie优化 CSS优化 javascript优化 图像优化

  • chrome给你的"优化 JavaScript 执行"

    原文:优化 JavaScript 执行 作者: Paul Lewis JavaScript 经常会触发视觉变化。...

  • JavaScript 优化

    1:减缓代码下载时间 1>:长变量名,注释,空格和换行等等,在工程上传到服务器的时候,应当全部删除; 2>:对于布...

  • javaScript 优化

    个人记录,方便以后查阅,不喜勿喷1.避免全局变量,查找全局比查找当前域慢2.使用const常量3.多次引用数组或对...

  • 前端性能优化

    前端性能优化 下面是我认知的前端性能优化的策略,本书主要着手 JavaScript 优化展开阐述。 JavaScr...

  • 高性能php开发

    php优化路线 1.前端JavaScript/css/Images 2. php 代码优化tips Opcode缓...

  • JavaScript 性能优化

    介绍 性能优化是不可避免的哪些内容可以看做性能优化无处不在的前端性能优化 JavaScript内存管理 为什么要使...

  • JavaScript 函数式编程 - 蹦床,递归优化

    Trampoline 解决 Blowing the stack JavaScript 引擎没有对递归调用优化。因此...

  • [性能优化]原生JS篇

    参考原文:javascript性能优化 Javascript的加载与执行 大家都知道,浏览器在解析DOM树的时候,...

网友评论

      本文标题:javascript记忆优化

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