zoukankan      html  css  js  c++  java
  • 关于《高性能JavaScript》制表(Memoization)笔记

    减少工作量是最好的性能优化技术。代码所做的事情越少,他的速度就越快。

    书中在关于用制表优化递归的下一段代码中,存在问题。

    function memfactorial(n){
        if (!memfactorial.cache){
            memfactorial.cache = {
                "0": 1,
                "1": 1
            };
        }

        if (!memfactorial.cache.hasOwnProperty(n)){
            memfactorial.cache[n] = n * memfactorial (n-1);
        }
        return memfactorial.cache[n];
    }

    下划线部分这种写法并没有真正解决递归的问题。当首次n过大时,本质上依然是一个递归。
    只适用于从小到大的逐步调用。

    例如:

    // 堆栈溢出

    alert(memfactorial(4375));

    // 正常

    alert(memfactorial(3750) + memfactorial(4375));

  • 相关阅读:
    JAVAGUI设计步骤
    JAVA接口基础知识总结
    静态关键字static用法。
    JAVA面向对象的多态性
    java封装的概念
    多线程
    关于集合类间的区别
    JAVA——异常
    java——内部类
    Java——接口
  • 原文地址:https://www.cnblogs.com/testudy/p/2003164.html
Copyright © 2011-2022 走看看