Files
deep_go/lessons/structs/unsafe_cast/performance_test.go

30 lines
493 B
Go

package main
import (
"testing"
"unsafe"
)
// go test -bench=. -benchmem performance_test.go
type Int int
var convertedData []int
func BenchmarkCast(b *testing.B) {
data := make([]Int, 1024)
for i := 0; i < b.N; i++ {
convertedData = make([]int, 1024)
for idx, value := range data {
convertedData[idx] = int(value)
}
}
}
func BenchmarkUnsafeCast(b *testing.B) {
data := make([]Int, 1024)
for i := 0; i < b.N; i++ {
convertedData = *(*[]int)(unsafe.Pointer(&data))
}
}