|
|
|
|
|
by logicchains
2 days ago
|
|
Your handwritten one has a major performance bug: found := false
for _, v := range s {
if v == needle {
found = true
break
}
}
Do you see it? It copies the v into a local variable, which could be tremendously wasteful if it's a large struct. You should instead be taking a pointer to s[i] and comparing the value there with `needle`.If you'd used `slices.Contains(s, needle)`, on the other hand, it could have such a performance bug in it and you'd never know. |
|
Perhaps you're much better at programming than I am, but I prefer these semantics in a language because I figure they're much more likely to have been optimized empirically, support vectorization, and be less buggy than another rote loop I'm trying to speed through.