下面是一个函数的定义:
func CrossPointTwoRects(rec1, rec2 []int) [][]int {
crossPoints := make([][]int, 0)
existed := make(map[string]bool, 0)
x1 := rec1[0]
y1 := rec1[1]
x2 := rec1[2]
y2 := rec1[3]
x3 := rec2[0]
y3 := rec2[1]
x4 := rec2[2]
y4 := rec2[3]
var xs = []int{x1, x2, x3, x4}
var ys = []int{y1, y2, y3, y4}
for _, x := range xs {
for _, y := range ys {
key := fmt.Sprintf("%d-%d", x, y)
if x1 <= x && x <= x2 && x3 <= x && x <= x4 && y1 <= y && y <= y2 && y3 <= y && y <= y4 && !existed[key] {
crossPoints = append(crossPoints, []int{x, y})
existed[key] = true
}
}
}
return crossPoints
}
而rect1和rect2是四个长度的array.这个函数应该执行得很快,但是当你多次调用它的时候,它会花费更多的时间,甚至一次调用也要花费0.5ms,这太令人惊讶了.
有人能告诉我为什么吗?谢谢你的帮助