【发布时间】:2019-02-27 00:49:49
【问题描述】:
我是writing a lambda function,需要将最近的点返回到另一个点。我在想,一定有比每次都计算到all 5000 points 的距离更好的方法。
func (places Places) closest(w place) (c place) {
c = places[0]
closestSoFar := w.Point.GreatCircleDistance(c.Point)
for _, p := range places[1:] {
distance := w.Point.GreatCircleDistance(p.Point)
if distance < closestSoFar {
// Set the return
c = p
// Record closest distance
closestSoFar = distance
}
}
return
}
如果您可以查看代码并指出我应该使用的库,我将不胜感激。另外我想对不同的方法进行基准测试,所以我想知道如何定义它。我认为目前我的方法在我的 i7 系统上大约需要 0.025 秒。也许我在这里做的是过早的优化?由于我的公交车站数据可能不会超过 10k 点。
【问题讨论】:
-
在 SO 上寻找库是题外话。优化:预先计算并保存最近的邻居/距离
标签: go geolocation geo