亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go1.20?arena新特性是什么

發布時間:2022-11-18 10:11:50 來源:億速云 閱讀:172 作者:iii 欄目:開發技術

這篇文章主要講解了“Go1.20 arena新特性是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Go1.20 arena新特性是什么”吧!

快速背景

Arena 指的是一種從一個連續的內存區域分配一組內存對象的方式。優點比一般的內存分配更有效率,也可以一次性釋放。當然了,它的重點是要手動管理內存

Go 團隊希望加進 Go 特性中,示例代碼如下:

import (
 “arena”
 …
)
type T struct {
 val int
}
func main() {
 a := arena.New()
 var ptrT *T
 a.New(&ptrT)
 ptrT.val = 1
 var sliceT []T
 a.NewSlice(&sliceT, 100)
 sliceT[99].val = 4
 a.Free()
}

手動調用 arena.New 方法分配 arena 內存,再調用 Free 方法進行釋放。

簡單來講就是可以手動管理內存,就可以做很多事了,也 “容易” 崩。

最新進展

這個提案一直在 issues 上適度的爭議討論,@Michael Knyszek 大佬代碼寫的很快,已經直接提交上去了...直到最近被人發現,讓他更新進度。

已經明確:Go1.20 將會支持 arena 特性,通過 GOEXPERIMENT=arena 來打開,接受大家的 review 和使用,抗阻很小。

已實現 API 和原提案不同的地方有:

  • API 使用了泛型,例如:arena.New[int](myArena "int")

  • Arena 的 塊大小是 8 MiB 而不是 64 MiB,似乎在更多情況下提供了更好的性能。

  • MSAN 和 ASAN 模式可用于識別不會導致崩潰的 use-after-free 錯誤(內存損壞應該仍然是不可能的)。 需注意,這些模式對非 cgo 的 Go 程序幾乎沒有作用。Arena 是個例外。

另外根據社區的反饋,可能還會出現配套類型的 Arena。如下函數簽名:

// MakeMap creates a new map[K]V with the provided capacity.
// The map[K]V must not be used after the arena is freed.
// Accessing the underlying storage of the map after free may result in a fault,
// but this fault is also not guaranteed.
func MakeMap[K comparable, V any](a *Arena, cap int "K comparable, V any") map[K]V { ... }

感謝各位的閱讀,以上就是“Go1.20 arena新特性是什么”的內容了,經過本文的學習后,相信大家對Go1.20 arena新特性是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

go
AI

清流县| 迁西县| 阿勒泰市| 昌乐县| 宁津县| 鹿邑县| 远安县| 瑞金市| 海宁市| 苗栗县| 拉孜县| 霍山县| 裕民县| 上栗县| 嘉黎县| 徐汇区| 桂阳县| 正蓝旗| 阳信县| 楚雄市| 定兴县| 迁安市| 怀柔区| 报价| 务川| 理塘县| 雷山县| 江安县| 资源县| 垦利县| 图们市| 辽源市| 临城县| 重庆市| 周口市| 新巴尔虎左旗| 依安县| 高邑县| 蓬安县| 万安县| 峨边|