MCPcopy Create free account
hub / github.com/egonelbre/exp / SearchUnsafe

Function SearchUnsafe

sentinels/linear.go:38–52  ·  view source on GitHub ↗
(items []int, elem int)

Source from the content-addressed store, hash-verified

36}
37
38func SearchUnsafe(items []int, elem int) (i int) {
39 var last int
40 last, items[len(items)-1] = items[len(items)-1], elem
41
42 p := unsafe.Pointer(&items[0])
43 for *(*int)(p) != elem {
44 p = unsafe.Pointer(uintptr(p) + unsafe.Sizeof(elem))
45 }
46 i = int((uintptr(p) - uintptr(unsafe.Pointer(&items[0]))) / unsafe.Sizeof(elem))
47 if i+1 == len(items) && last != elem {
48 i++
49 }
50 items[len(items)-1] = last
51 return i
52}

Callers 1

BenchmarkSearch_UnsafeFunction · 0.85

Calls

no outgoing calls

Tested by 1

BenchmarkSearch_UnsafeFunction · 0.68