淘汰+大数据集性能

时间:2013-05-29 10:38:28

标签: javascript knockout.js haversine

我有一个非常大的纬度/经度数据集,我希望能够过滤和显示客户端。我已经分析并优化了我能做的最好的事情,但是除了可以做些什么之外还有什么可以加快性能?

  • 准确度需要达到英里/公里级别。
  • 我需要IE 7/8/9/10支持,虽然我接受了进一步下降,但性能可能会变差。
  • 我没有绝对依赖任何图书馆,无论什么是最适合这份工作的。

粗略

  • Chrome:1.1s
  • Firefox: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.

1 个答案:

答案 0 :(得分:4)

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

原始修改后的代码只需 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

我希望它有所帮助。