javascript - Knockout + 大数据集性能

标签 javascript knockout.js haversine

我有一个非常大的纬度/经度数据集,我希望能够在客户端进行过滤和显示。我已经尽我所能地分析和优化了,但是除了提高性能之外还有什么可以做的吗?

  • 精度需要达到英里/公里级别。
  • 我需要 IE 7/8/9/10 支持,尽管我接受进一步降低性能可能会变差的事实。
  • 我对任何图书馆都没有绝对的依赖,只要是最适合工作的。

大致

  • Chrome:1.1 秒
  • Firefox:0.9 秒
  • IE10:5.1 秒
  • IE9:3 秒

http://jsfiddle.net/hRvKz/

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

最佳答案

您的代码在条件和每个样本之间创建了依赖关系。 我创建了一个计算函数,以便在条件和示例数组之间创建依赖关系。这是为了仅创建一些依赖项。

修改后的代码只需要 20 毫秒,而原始代码需要 2700 毫秒

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

希望对你有帮助。

关于javascript - Knockout + 大数据集性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16811685/

相关文章:

mysql - Django ORM 查询中的Haversine Python 包

javascript - 如何修改 bootstrap carousel javascript 文件,使其可以触发此功能?

javascript - 不卡住的 GulpJs 错误处理

javascript - DOM 元素的 margin-left 不起作用

Knockout.js:将对象绑定(bind)为 <select>/dropdown 中的值

javascript - 使用 Knockout.JS 构建分页控件

javascript - 点和线之间的最短距离(Google Maps API 问题?)

Python 快速计算很多距离

javascript - 使用Javascript将页面从子域链接到具有相同结构子文件夹的另一个子域

javascript - 使用 Knockout.js 绑定(bind)在表单上显示错误