第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從數(shù)字數(shù)組中加/減值的最快方法是什么?

從數(shù)字數(shù)組中加/減值的最快方法是什么?

Go
小唯快跑啊 2022-06-01 15:59:54
我有下面的代碼,想從每個元素中添加/減去值“1”。最快的方法是什么?詢問是因為我在 myByte 數(shù)組中有 100 萬個元素。下面的代碼只顯示了 3,但如果有一百萬,它會花費很長時間。myByte := []byte("a","b","c")for i:=0; i<len(myByte); i++ {    myByte[i]+=1}
查看完整描述

3 回答

?
繁花不似錦

TA貢獻1851條經(jīng)驗 獲得超4個贊

分而治之。將你的大數(shù)組分成 N 個連續(xù)的部分,然后用一個 goroutine 處理每個部分。



查看完整回答
反對 回復 2022-06-01
?
慕雪6442864

TA貢獻1812條經(jīng)驗 獲得超5個贊

計時并嘗試并行化


package add


import (

        "testing"

)



func BenchmarkSimple(b *testing.B) {

        // to run use go test -bench=.

        var array=make([]byte,1000000)

        for i := 0; i < b.N; i++ {

               addit(&array,1)

        }

}


func BenchmarkPara(b *testing.B) {

        // to run use go test -bench=.

        var array=make([]byte,1000000)

        var p1=array[0:250000]

        var p2=array[250001:500000]

        var p3=array[500001:750000]

        var p4=array[750001:999999]

        for i := 0; i < b.N; i++ {

               go addit(&p1,1)

               go addit(&p2,1)

               go addit(&p3,1)

               go addit(&p4,1)

        }

}



func addit(myByte *[]byte, v byte) {

for i:=0; i<len(*myByte); i++ {

    (*myByte)[i]+=v

}

}

這是我在筆記本電腦上看到的。我的筆記本電腦有4核


$ go test -bench=.

goos: darwin

goarch: amd64

BenchmarkSimple-4           1130           1035976 ns/op

BenchmarkPara-4            10000            559050 ns/op

PASS

ok      _/Users/jamandre/wip/add        6.923s

對于這樣的事情,時間安排并不像看起來那么聰明,請參閱https://www.youtube.com/watch?v=r-TLSBdHe1A&t=46s但請務必把握好時間!


四個 goroutine 并沒有給 4x 加速,大約 2 x 是相當不錯的


查看完整回答
反對 回復 2022-06-01
?
蝴蝶不菲

TA貢獻1810條經(jīng)驗 獲得超4個贊

并行化你的代碼可能會有所幫助,并行處理是 Go 中的一等公民,因此go指令和goroutines也是如此。

SIMD指令還允許對此類計算進行巨大的性能改進。這是一個使用它們的 Go 包。


查看完整回答
反對 回復 2022-06-01
  • 3 回答
  • 0 關(guān)注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號