亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

go slice不同初始化方式性能及數(shù)組比較詳解

 更新時(shí)間:2022年11月28日 11:13:15   作者:沙彌  
這篇文章主要為大家介紹了go slice不同初始化方式性能及數(shù)組比較示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

正文

go語(yǔ)言開(kāi)發(fā)中,slice是我們常用的數(shù)據(jù)類型之一,也是因?yàn)樗撵`活性,自己也很少使用數(shù)組,當(dāng)然我也知道它的一些特性,不過(guò)沒(méi)有真實(shí)的去驗(yàn)證它,因?yàn)榇蠖鄶?shù)使用場(chǎng)景沒(méi)必要對(duì)code太過(guò)苛刻,但是如果封裝作為包為其他邏輯提供使用的時(shí)候,我覺(jué)得還是要在意這些事的,畢竟作為公共包使用時(shí),也就證明了使用的頻率的頻繁性。那么有些事還是指的記錄一下,上周閑來(lái)無(wú)事跑一下吧,今天做一下記錄

各種場(chǎng)景代碼

其實(shí)我們也都知道slice的底層邏輯是一個(gè)動(dòng)態(tài)數(shù)組,創(chuàng)建的方式也略有不同,slice的創(chuàng)建也可以是最簡(jiǎn)單make,這就能滿足我們的使用,也可以直接指定他的cap容量,還有最好的做法是聲明它的容量的同時(shí),直接也分配好了它的內(nèi)存。各種場(chǎng)景的代碼如下,已iterator1000次為例測(cè)試:

/*
Package main
@Time   : 2022/11/25 17:47
@Author : ckx0709
@Remark :
*/
package main
// SliceUseSimple 簡(jiǎn)單的初始化
func SliceUseSimple() []int {
    is := make([]int, 0)
    for i := 0; i < 1000; i++ {
        is = append(is, i)
    }
    return is
}
// SliceUseInitCap 初始化容量
func SliceUseInitCap() []int {
    is := make([]int, 0, 1000)
    for i := 0; i < 1000; i++ {
        is = append(is, i)
    }
    return is
}
// SliceUseInitFull 初始化容量&分配好內(nèi)存
func SliceUseInitFull() []int {
    is := make([]int, 1000, 1000)
    for i := 0; i < 1000; i++ {
        is[i] = i
    }
    return is
}
// ArrayUse 數(shù)組
func ArrayUse() []int {
    var is [1000]int
    for i := 0; i < 1000; i++ {
        is[i] = i
    }
    return is[:]
}

使用benchmark測(cè)試

$ go test -benchmem -bench=Benchmark*
goos: windows
goarch: amd64
pkg: go_iteration/other/temp
cpu: Intel(R) Core(TM) i5-9400 CPU @ 2.90GHz
BenchmarkSliceUseSimple-6         348466              3501 ns/op           25208 B/op         12 allocs/op
BenchmarkSliceUseInitCap-6       2190738               548.7 ns/op             0 B/op          0 allocs/op
BenchmarkSliceUseInitFull-6      4408171               261.4 ns/op             0 B/op          0 allocs/op
BenchmarkArrayUse-6              4483910               262.1 ns/op             0 B/op          0 allocs/op
PASS
ok      go_iteration/other/temp 6.067s

運(yùn)行了3次,數(shù)值偏差不大,就沒(méi)必要每次都貼出來(lái)了,這樣也就看出了當(dāng)我們使用最簡(jiǎn)單的聲明方式&聲明時(shí)就先分配好一切的性能相差了十幾倍,并且最簡(jiǎn)單聲明方式占用內(nèi)存&分配內(nèi)存的次數(shù)也很多,第二種,只證明好容量&全聲明相比,剛好性能存在一倍的差異,全聲明&數(shù)組的效率基本一致。

以上就是go slice不同初始化方式性能及數(shù)組比較詳解的詳細(xì)內(nèi)容,更多關(guān)于go slice初始化方式性能比較的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Go變量作用域代碼實(shí)戰(zhàn)詳解

    Go變量作用域代碼實(shí)戰(zhàn)詳解

    Go語(yǔ)言提供了幾種不同的作用域類型,使得開(kāi)發(fā)者可以靈活地控制變量的可見(jiàn)范圍和生命周期,本章節(jié)將詳細(xì)概述Go語(yǔ)言中變量的各種作用域,幫助讀者更好地理解和應(yīng)用這些概念,需要的朋友可以參考下
    2024-06-06
  • go循環(huán)依賴的最佳解決方案

    go循環(huán)依賴的最佳解決方案

    ? import cycle not allowed(循環(huán)依賴不被允許)相信作為每一個(gè)golang語(yǔ)言使用研發(fā),都遇到過(guò)這個(gè)令人頭痛的報(bào)錯(cuò),循環(huán)依賴是指兩個(gè)或多個(gè)模塊之間互相依賴,形成了一個(gè)閉環(huán)的情況,本文會(huì)結(jié)合部分案例對(duì)解決方案進(jìn)行講解,需要的朋友可以參考下
    2023-10-10
  • k8s容器互聯(lián)flannel?vxlan通信原理

    k8s容器互聯(lián)flannel?vxlan通信原理

    這篇文章主要為大家介紹了k8s容器互聯(lián)flannel?vxlan通信原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 圖文詳解Go中的channel

    圖文詳解Go中的channel

    Channel是go語(yǔ)言內(nèi)置的一個(gè)非常重要的特性,也是go并發(fā)編程的兩大基石之一,下面這篇文章主要給大家介紹了關(guān)于Go中channel的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • Go位集合相關(guān)操作bitset庫(kù)安裝使用

    Go位集合相關(guān)操作bitset庫(kù)安裝使用

    這篇文章主要為大家介紹了Go位集合相關(guān)操作bitset庫(kù)安裝使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • golang 如何獲取文件夾下面的文件列表

    golang 如何獲取文件夾下面的文件列表

    這篇文章主要介紹了golang 獲取文件夾下面的文件列表方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-05-05
  • Go實(shí)現(xiàn)分布式系統(tǒng)高可用限流器實(shí)戰(zhàn)

    Go實(shí)現(xiàn)分布式系統(tǒng)高可用限流器實(shí)戰(zhàn)

    這篇文章主要為大家介紹了Go實(shí)現(xiàn)分布式系統(tǒng)高可用限流器實(shí)戰(zhàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 使用Go實(shí)現(xiàn)偽靜態(tài)URL重寫(xiě)功能

    使用Go實(shí)現(xiàn)偽靜態(tài)URL重寫(xiě)功能

    在Web開(kāi)發(fā)中,偽靜態(tài)URL已成為優(yōu)化網(wǎng)站架構(gòu)和提升SEO的常用技術(shù)手段,偽靜態(tài)URL是一種介于動(dòng)態(tài)URL和靜態(tài)URL之間的解決方案,本文給大家介紹了如何使用Go實(shí)現(xiàn)偽靜態(tài)URL重寫(xiě)功能,需要的朋友可以參考下
    2024-08-08
  • Go pprof內(nèi)存指標(biāo)含義備忘錄及案例分析

    Go pprof內(nèi)存指標(biāo)含義備忘錄及案例分析

    這篇文章主要介紹了Go pprof內(nèi)存指標(biāo)含義備忘錄問(wèn)題,小編特此把問(wèn)題及案例分享到腳本之家平臺(tái)供大家學(xué)習(xí),需要的朋友可以參考下
    2020-03-03
  • golang?使用sort.slice包實(shí)現(xiàn)對(duì)象list排序

    golang?使用sort.slice包實(shí)現(xiàn)對(duì)象list排序

    這篇文章主要介紹了golang?使用sort.slice包實(shí)現(xiàn)對(duì)象list排序,對(duì)比sort跟slice兩種排序的使用方式區(qū)別展開(kāi)內(nèi)容,需要的小伙伴可以參考一下
    2022-03-03

最新評(píng)論