【问题标题】:Java: Calculate distance between a large number of locations and performanceJava:计算大量位置之间的距离和性能
【发布时间】:2010-06-03 16:55:46
【问题描述】:

我正在创建一个应用程序,它会告诉用户大量点离他们当前位置有多远。

每个点都有一个经度和纬度。

我已经阅读了这篇文章 http://www.movable-type.co.uk/scripts/latlong.html

看到这个帖子 Calculate distance in meters when you know longitude and latitude in java

需要进行许多计算(50-200)。

如果速度比这些计算的准确性更重要,哪一个最好?

【问题讨论】:

  • 距离有多远?在较短的距离内,您可以假设地球是平的并进行更简单的数学运算。 1-10 英里还可以,5000 英里可能不太好。
  • 我们在谈论多少分?

标签: java performance latitude-longitude time-complexity


【解决方案1】:

这是 O(n) 不用担心性能。除非每一个计算都花费太长时间(事实并非如此)。

【讨论】:

    【解决方案2】:

    正如 Imre 所说,这是 O(n) 或线性,这意味着无论值如何不同或执行多少次,算法中的计算每次迭代都将花费相同的时间。但是,我不同意余弦球面定律在算法中执行的实际变量和计算更少,这意味着使用的资源更少。因此,我会选择那个,因为唯一会改变速度的是可用的计算机资源。 (注意:尽管除非在非常旧/慢的机器上,否则几乎不会引起注意)

    基于意见的判断:余弦球定律

    【讨论】:

      【解决方案3】:

      您发布的两个链接使用相同的球面几何公式来计算距离,因此我认为它们的运行速度不会有显着差异。此外,它们的计算成本并不高,因此如果您在现代硬件上运行,即使是几百次迭代的规模,我也不认为这是一个问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-26
        • 1970-01-01
        • 2012-10-05
        • 2017-04-20
        • 1970-01-01
        相关资源
        最近更新 更多