2012-04-24 97 views
2

我已經有了一個相當複雜的應用程序,一個視圖模型具有記錄列表:可怕的性能對象

app.records = ko.observableArray([]) 

使用AJAX我抓住一些JSON從服務器將其填充到陣列中:

$.getJSON("/api/records", function(data){ 
    app.records($.map(data, function(item){ 
     r = new Record(item); 
     return r; 
    }); 
}); 

這對於我的測試數據集中的至少6個項目非常有用。該應用幾乎立即加載。但我也有一個創造新的記錄按鈕,做到這一點:

$.post("/api/records", {}, function(record){ 
    r = new Record(record); 
    console.log("About to push..."); 
    app.records.push(r); 
    console.log("Pushed the new record."); 
}); 

第一個日誌行瞬間出現,但第二線大約需要8秒出現。評論推動使操作有效地立即。我相信這個問題是由於我有相當多的相當複雜的計算變量引起的;我認爲這一推動正在導致它重新計算一切。然而,奇怪的是,在頁面加載時添加六個測試項目是即時的。

任何人都可以給我一些提示來調試嗎?該應用程序不處於我可以輕鬆共享代碼或構建隔離問題的JSFiddle的狀態。我不願意盲目地評論一下線路,看看是否有什麼解決問題,因爲這可能需要很長時間。有沒有人有任何想法?或者至少是一個總體戰略? :)

(我目前使用的2.1候選發佈;與淘汰賽2.0出現的問題,以及)

回答

0

好了,你的理論有關計算觀測造成性能問題似乎是合理的。使用「二分搜索」策略評論他們可能是本地化問題的最快方法。或者您可以將日誌記錄添加到您計算的所有observables中。