成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

函數(shù)記憶

jokester / 1724人閱讀

摘要:函數(shù)可以將先前操作的結(jié)果記錄在某個對象里,從而避免無謂的重復運算。這種優(yōu)化被稱為記憶。在看看斐波那契數(shù)列的栗子使用了函數(shù)記憶,調(diào)用次數(shù)從次減少到了次。

函數(shù)可以將先前操作的結(jié)果記錄在某個對象里,從而避免無謂的重復運算。這種優(yōu)化被稱為記憶。

最近讀javascript語言精粹這本書函數(shù)章節(jié)的時候,里面有個記憶函數(shù)的優(yōu)化,書中給的栗子是斐波那契數(shù)列執(zhí)行的時候減少調(diào)用次數(shù)的優(yōu)化,那么這種優(yōu)化能在哪些場景使用呢?

在看書中的栗子之前,我們先看一個栗子:

var memorize = function(f,hasher){
    var memoize = function(name){
        var cache = memoize.cache;
        var key = "" + (hasher ? hasher.apply(this,arguments):name)
        if(!cache[key]){
            cache[key] = f.apply(this,arguments);
        }
        return cache[key];
    }
    memoize.cache = {};
    return memoize;
}

function add(a,b){
    return a+b;
}

var memorizedAdd = memorize(add,function(){
    var args = Array.prototype.slice.call(arguments);
    return JSON.stringify(args);
});


console.time("使用函數(shù)記憶執(zhí)行時間");
for(var i = 0; i < 10000;i++){
    memorizedAdd(1,2);
}
console.timeEnd("使用函數(shù)記憶執(zhí)行時間");


console.time("原生調(diào)用執(zhí)行時間");
for(var i = 0; i < 10000;i++){
    add(1,2);
}
console.timeEnd("原生調(diào)用執(zhí)行時間");

//使用函數(shù)記憶執(zhí)行時間: 15.49462890625ms
//原生調(diào)用執(zhí)行時間: 0.962890625ms

上面的memoize方法來自underscore源碼,這說明函數(shù)記憶并不是萬能的。

在看看斐波那契數(shù)列的栗子:

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

fibonacci = memorize(fibonacci);
for(var i = 0; i <= 10;i++){
 fibonacci(i);
}
console.log(count);//12

使用了函數(shù)記憶,調(diào)用次數(shù)從453次減少到了12次。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/90440.html

相關(guān)文章

  • SPA 路由記憶

    摘要:路由記憶名詞解釋在中后臺系統(tǒng)開發(fā)中,訪問任何頁面時,認證是永遠繞不過的檻。這個過程,暫且稱之為路由記憶,前面例子中的登錄頁面稱之為記憶節(jié)點。 SPA 路由記憶 名詞解釋 在中后臺系統(tǒng)開發(fā)中,訪問任何頁面時,認證是永遠繞不過的檻。以登錄為例,如果檢測出當前用戶未登錄,會強制跳轉(zhuǎn)到登錄頁面提示用戶進行登錄。登錄完成后,系統(tǒng)需要跳轉(zhuǎn)至用戶原先想訪問的頁面。這個過程,暫且稱之為路由記憶,前面例...

    starsfun 評論0 收藏0
  • 深度解析LSTM神經(jīng)網(wǎng)絡的設計原理

    摘要:而從數(shù)學上看的話,更是短時記憶了,因為梯度流經(jīng)的時候,經(jīng)歷的是的連環(huán)相乘的路徑在輸入輸出門關(guān)閉前,顯然如前邊的數(shù)學證明中所述,這樣會發(fā)生梯度爆炸和 引人入勝的開篇:想要搞清楚LSTM中的每個公式的每個細節(jié)為什么是這樣子設計嗎?想知道simple RNN是如何一步步的走向了LSTM嗎?覺得LSTM的工作機制看不透?恭喜你打開了正確的文章!?前方核彈級高能預警!本文信息量非常大,文章長且思維連貫...

    jay_tian 評論0 收藏0
  • JavaScript專題之函數(shù)記憶

    摘要:專題系列第十七篇,講解函數(shù)記憶與菲波那切數(shù)列的實現(xiàn)定義函數(shù)記憶是指將上次的計算結(jié)果緩存起來,當下次調(diào)用時,如果遇到相同的參數(shù),就直接返回緩存中的數(shù)據(jù)。 JavaScript 專題系列第十七篇,講解函數(shù)記憶與菲波那切數(shù)列的實現(xiàn) 定義 函數(shù)記憶是指將上次的計算結(jié)果緩存起來,當下次調(diào)用時,如果遇到相同的參數(shù),就直接返回緩存中的數(shù)據(jù)。 舉個例子: function add(a, b) { ...

    RobinTang 評論0 收藏0
  • 函數(shù)式編程之記憶 js

    函數(shù)式編程之記憶是一種時間換空間的方法,用犧牲空間的復雜度來換取時間的復雜度 字符串連接 function f() { var s = arguments.length + Array.prototype.join.call(arguments); console.log(s); }; 這里使用的是Array.prototype.join方法進行字符串連接返回的是連接的結(jié)果 接下來,寫一個...

    DC_er 評論0 收藏0
  • LSTM入門必讀:從基礎知識到工作方式詳解

    摘要:意味著完全保持,意味著完全丟棄??ū全F寫這篇博文的時間我本可以抓一百只,請看下面的漫畫。神經(jīng)網(wǎng)絡神經(jīng)網(wǎng)絡會以的概率判定輸入圖片中的卡比獸正在淋浴,以的概率判定卡比獸正在喝水,以的概率判定卡比獸正在遭遇襲擊。最終結(jié)果是卡比獸正在遭遇襲擊 我第一次學習 LSTM 的時候,它就吸引了我的眼球。事實證明 LSTM 是對神經(jīng)網(wǎng)絡的一個相當簡單的擴展,而且在最近幾年里深度學習所實現(xiàn)的驚人成就背后都有它們...

    alanoddsoff 評論0 收藏0

發(fā)表評論

0條評論

jokester

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<