<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
大概半年前,我寫過一篇文章《Go 要違背初心嗎?新提案:手動管理記憶體》。有興趣了深入解的同學,可以再回顧一下。
當時我們還想著 Go 團隊應該不會接納,至少不會那麼快:
懶得翻也可以看我再次道來,本文提到的提案《proposal: arena: new package providing memory arenas》,這其中的 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 和原提案不同的地方有:
arena.New[int](myArena "int")
。另外根據社群的反饋,可能還會出現配套型別的 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 釋出該新特性的話,按照發布週期計劃,是 2 月份左右釋出,相信大家很快就能用上,可以多多關注。
一開始瞭解這個提案時,還想著 Go 搞了快 10 年才採納和推進泛型。這 Arena 應該不至於這麼快吧?畢竟加進去了,許多程式都可以寫的複雜起來。
沒想到...現實打臉來的太快,推進的很快。
就像其他小夥伴說的,這可以從程式碼優化效能,而不需要砍需求。也是一個有意思且不錯的源動力!
據小道訊息,某些同學表示在框架和其它場景測過,有說變得快了,有說沒差多少。比較迷,提案內暫時未提供測試報告,不好定論。
Go 1.20 Beta 將在未來幾周內(2022.11 月底前)釋出,讓我們拭目以待:)
以上就是Go1.20 arena新特性範例詳解的詳細內容,更多關於Go1.20 arena新特性的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45