1 回答

TA貢獻1828條經驗 獲得超6個贊
您分配的指針在您的示例中都是 8 個字節:gc amd64 darwin.
對于你的例子,
package main
import (
"fmt"
"runtime"
"unsafe"
)
func main() {
fmt.Println(runtime.Compiler, runtime.GOARCH, runtime.GOOS)
var i8 *int8
var i16 *int16
var i32 *int32
var i64 *int64
fmt.Println(&i8, unsafe.Sizeof(i8), unsafe.Sizeof(*i8))
fmt.Println(&i16, unsafe.Sizeof(i16), unsafe.Sizeof(*i16))
fmt.Println(&i32, unsafe.Sizeof(i32), unsafe.Sizeof(*i32))
fmt.Println(&i64, unsafe.Sizeof(i64), unsafe.Sizeof(*i64))
}
輸出:
gc amd64 linux
0xc00000e030 8 1
0xc00000e038 8 2
0xc00000e040 8 4
0xc00000e048 8 8
對于 CPU 操作,使用 CPU 的自然字長通常是最有效的,例如,int或int64on amd64。
對于內存大小,對于大量整數,使用可以容納值范圍的最小整數大小可能是最有效的。
這是一種平衡行為。對來自真實應用程序的真實代碼進行基準測試。
- 1 回答
- 0 關注
- 199 瀏覽
添加回答
舉報