2013-05-29 39 views
1

我有一個非常大的經緯度數據集,我希望能夠過濾和顯示客戶端。我已經完成了最佳的配置和優化,但是還有什麼比可以加速性能更進一步的呢?淘汰賽+大數據集性能

  • 準確度需要在英里/公里的水平。
  • 我需要IE 7/8/9/10的支持,儘管我接受更進一步的下去,我們去的表現可能會變得更糟。
  • 我對任何圖書館都沒有絕對的依賴關係,無論是最適合的工作。

大約

  • 鉻:1.1s
  • 火狐:0.9S
  • IE10:5.1s
  • IE9:3S

http://jsfiddle.net/hRvKz/

// Apparently I must post code... but out of context it would make no sense. 
// Checkout jsfiddle. 
+0

任何你不能在服務器上做過濾的原因? –

+0

我正在嘗試查看是否可以使客戶端篩選速度比服務器後置過濾因子稍微延遲一點。這些服務器位於美國,用戶是全球性的。 – Hawxby

回答

3

您的代碼創建了標準和每個樣本之間的依賴關係。 我創建了一個計算函數,以創建標準和樣本數組之間的依賴關係。這是爲了僅創建一些依賴關係。

修改後的代碼只需要20ms針對2700ms爲原件。

viewModel.computedLocations = ko.computed(function() { 
    var lat = viewModel.filters.lat(); 
    var lng = viewModel.filters.lng(); 

    var locs = viewModel.locations(); 
    ko.utils.arrayForEach(locs, function (item) { 
     item.roughDistance = equirectangularApproximation(item.lat, item.lng, lat, lng); 
     item.closeDistance = sphericalLawOfCosines(item.lat, item.lng, lat, lng); 
     item.closeDistanceStatic = item.closeDistance; 
     item.exactDistance = haversine(item.lat, item.lng, lat, lng); 
    }); 
    return locs; 
}); 

See fiddle

我希望它能幫助。

+0

非常好。我正在按照您發佈的相似的方式工作,謝謝! – Hawxby