javascript使用缓存计算来提高应用程序性能

<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Testing Memoization</title>
    <meta charset="utf-8">
    <script>
    //<![CDATA[
    window.onload=function(){
        
        //Memoized函数
        var 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;
        }();
        
        //nonmemoized
        var fib=function(n){
            return n<2?n:fib(n-1)+fib(n-2);
        }
        
        //运行nonmemo的函数,使用一个定时器
        console.time("non-memo");
        for(var i=0;i<=30;i++){
            console.log(i+" "+fib(i));
        }
        console.timeEnd("non-memo");
        
        //运行memo的函数,使用一个定时器
        console.time("memo");
        for(var i=0;i<=30;i++){
            console.log(i+" "+fibonacci(i));
        }
        console.timeEnd("memo");
    }
    //--><!]]>
    </script>
</head>
<body>
</body>
</html>

打开浏览器的控制台查看两个算法的运行时间对比,memo是使用了缓存计算,nonmemo没有使用,两个都是递归函数

你可能感兴趣的:(JavaScript,缓存计算)