最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go1.20?arena新特性示例詳解

 更新時(shí)間:2022年11月15日 16:37:54   作者:煎魚eddycjy  
這篇文章主要為大家介紹了Go1.20?arena新特性示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

大概半年前,我寫過一篇文章《Go 要違背初心嗎?新提案:手動(dòng)管理內(nèi)存》。有興趣了深入解的同學(xué),可以再回顧一下。

當(dāng)時(shí)我們還想著 Go 團(tuán)隊(duì)?wèi)?yīng)該不會接納,至少不會那么快:

懶得翻也可以看我再次道來,本文提到的提案《proposal: arena: new package providing memory arenas》,這其中的 Arena 將會是一個(gè)突破項(xiàng)。

快速背景

Arena 指的是一種從一個(gè)連續(xù)的內(nèi)存區(qū)域分配一組內(nèi)存對象的方式。優(yōu)點(diǎn)比一般的內(nèi)存分配更有效率,也可以一次性釋放。當(dāng)然了,它的重點(diǎn)是要手動(dòng)管理內(nèi)存。

Go 團(tuán)隊(duì)希望加進(jìn) 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()
}

手動(dòng)調(diào)用 arena.New 方法分配 arena 內(nèi)存,再調(diào)用 Free 方法進(jìn)行釋放。

簡單來講就是可以手動(dòng)管理內(nèi)存,就可以做很多事了,也 “容易” 崩。

最新進(jìn)展

這個(gè)提案一直在 issues 上適度的爭議討論,@Michael Knyszek 大佬代碼寫的很快,已經(jīng)直接提交上去了...直到最近被人發(fā)現(xiàn),讓他更新進(jìn)度。

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

已實(shí)現(xiàn) API 和原提案不同的地方有:

  • API 使用了泛型,例如:arena.New[int](myArena "int")。
  • Arena 的 塊大小是 8 MiB 而不是 64 MiB,似乎在更多情況下提供了更好的性能。
  • MSAN 和 ASAN 模式可用于識別不會導(dǎo)致崩潰的 use-after-free 錯(cuò)誤(內(nèi)存損壞應(yīng)該仍然是不可能的)。 需注意,這些模式對非 cgo 的 Go 程序幾乎沒有作用。Arena 是個(gè)例外。

另外根據(jù)社區(qū)的反饋,可能還會出現(xiàn)配套類型的 Arena。如下函數(shù)簽名:

// 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 發(fā)布該新特性的話,按照發(fā)布周期計(jì)劃,是 2 月份左右發(fā)布,相信大家很快就能用上,可以多多關(guān)注。

總結(jié)

一開始了解這個(gè)提案時(shí),還想著 Go 搞了快 10 年才采納和推進(jìn)泛型。這 Arena 應(yīng)該不至于這么快吧?畢竟加進(jìn)去了,許多程序都可以寫的復(fù)雜起來。

沒想到...現(xiàn)實(shí)打臉來的太快,推進(jìn)的很快。

就像其他小伙伴說的,這可以從代碼優(yōu)化性能,而不需要砍需求。也是一個(gè)有意思且不錯(cuò)的源動(dòng)力!

據(jù)小道消息,某些同學(xué)表示在框架和其它場景測過,有說變得快了,有說沒差多少。比較迷,提案內(nèi)暫時(shí)未提供測試報(bào)告,不好定論。

Go 1.20 Beta 將在未來幾周內(nèi)(2022.11 月底前)發(fā)布,讓我們拭目以待:)

以上就是Go1.20 arena新特性示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Go1.20 arena新特性的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Golang并發(fā)編程之Channel詳解

    Golang并發(fā)編程之Channel詳解

    傳統(tǒng)的并發(fā)編程模型是基于線程和共享內(nèi)存的同步訪問控制的,共享數(shù)據(jù)受鎖的保護(hù),使用線程安全的數(shù)據(jù)結(jié)構(gòu)會使得這更加容易。本文將詳細(xì)介紹Golang并發(fā)編程中的Channel,,需要的朋友可以參考下
    2023-05-05
  • Golang?實(shí)現(xiàn)Redis?協(xié)議解析器的解決方案

    Golang?實(shí)現(xiàn)Redis?協(xié)議解析器的解決方案

    這篇文章主要介紹了Golang???實(shí)現(xiàn)?Redis?協(xié)議解析器,本文將分別介紹Redis 通信協(xié)議 以及 協(xié)議解析器 的實(shí)現(xiàn),若您對協(xié)議有所了解可以直接閱讀協(xié)議解析器部分,需要的朋友可以參考下
    2022-10-10
  • golang解析html網(wǎng)頁的方法

    golang解析html網(wǎng)頁的方法

    今天小編就為大家分享一篇golang解析html網(wǎng)頁的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Golang分布式應(yīng)用之Redis示例詳解

    Golang分布式應(yīng)用之Redis示例詳解

    這篇文章主要為大家介紹了Golang分布式應(yīng)用之Redis示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • golang高并發(fā)之本地緩存詳解

    golang高并發(fā)之本地緩存詳解

    這篇文章主要為大家詳細(xì)介紹了golang高并發(fā)中本地緩存的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-10-10
  • Go語言中工作池的原理與實(shí)現(xiàn)

    Go語言中工作池的原理與實(shí)現(xiàn)

    工作池是一種并發(fā)編程模式,它使用一組固定數(shù)量的工作線程來執(zhí)行任務(wù)隊(duì)列中的工作單元,本文將介紹工作池的工作原理,并通過代碼示例演示其在實(shí)際應(yīng)用中的用途,有需要的可以參考下
    2023-10-10
  • 如何在golang中檢查文件是否存在

    如何在golang中檢查文件是否存在

    如果你用的是?Python,可通過?os.path.exists?這樣的標(biāo)準(zhǔn)庫函數(shù)實(shí)現(xiàn),遺憾的是,Go?標(biāo)準(zhǔn)庫沒有提供這樣直接的函數(shù),所以下面我們就來了解下如何使用GO語言能實(shí)現(xiàn)檢查文件是否存在呢
    2024-02-02
  • 一文詳解kubernetes?中資源分配的那些事

    一文詳解kubernetes?中資源分配的那些事

    這篇文章主要為大家介紹了kubernetes?中資源分配的那些事,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Go語言框架Beego項(xiàng)目搭建的方法步驟

    Go語言框架Beego項(xiàng)目搭建的方法步驟

    這篇文章主要介紹了Go語言框架Beego項(xiàng)目搭建的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Golang Http請求返回結(jié)果處理

    Golang Http請求返回結(jié)果處理

    本文主要介紹了Golang Http請求返回結(jié)果處理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08

最新評論

南召县| 建湖县| 大理市| 新源县| 云浮市| 岢岚县| 寿光市| 阿坝| 红安县| 虎林市| 巫溪县| 绥棱县| 黑水县| 肃北| 尼木县| 元氏县| 错那县| 且末县| 南溪县| 昌江| 北海市| 安泽县| 巫山县| 大方县| 南川市| 宝坻区| 邻水| 从江县| 犍为县| 武川县| 信阳市| 广西| 全南县| 修武县| 水城县| 尚义县| 台前县| 琼海市| 慈溪市| 泸州市| 湘潭县|