溫馨提示×

溫馨提示×

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

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

在Go中怎么轉(zhuǎn)儲(chǔ)GOSSAFUNC圖

發(fā)布時(shí)間:2021-11-01 16:15:56 來源:億速云 閱讀:206 作者:iii 欄目:編程語言

這篇文章主要介紹“在Go中怎么轉(zhuǎn)儲(chǔ)GOSSAFUNC圖”,在日常操作中,相信很多人在在Go中怎么轉(zhuǎn)儲(chǔ)GOSSAFUNC圖問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”在Go中怎么轉(zhuǎn)儲(chǔ)GOSSAFUNC圖”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

Go 編譯器的 SSA 后端包含一種工具,可以生成編譯階段的 HTML 調(diào)試輸出。這篇文章介紹了如何為函數(shù)方法打印 SSA 輸出。

讓我們從一個(gè)包含函數(shù)、值方法和指針方法的示例程序開始:

package main import (    "fmt") type Numbers struct {    vals []int} func (n *Numbers) Add(v int) {    n.vals = append(n.vals, v)} func (n Numbers) Average() float64 {    sum := 0.0    for _, num := range n.vals {        sum += float64(num)    }    return sum / float64(len(n.vals))}  func main() {    var numbers Numbers    numbers.Add(200)    numbers.Add(43)    numbers.Add(-6)    fmt.Println(numbers.Average())}

通過 GOSSAFUNC 環(huán)境變量控制 SSA 調(diào)試輸出。此變量含有要轉(zhuǎn)儲(chǔ)的函數(shù)的名稱。這不是函數(shù)的完全限定名。對于上面的 func main,函數(shù)名稱為 main 而不是 main.main。

% env GOSSAFUNC=main go buildruntimedumped SSA to ../../go/src/runtime/ssa.htmltdumped SSA to ./ssa.html

在這個(gè)例子中,GOSSAFUNC=main 同時(shí)匹配了 main.main 和一個(gè)名為 runtime.main 的函數(shù)。[1]這有點(diǎn)不走運(yùn),但是實(shí)際上可能沒什么大不了的,因?yàn)槿绻阋獙Υa進(jìn)行性能調(diào)整,它就不會(huì)出現(xiàn)在 func main 中的巨大的意大利面塊中。

你的代碼更有可能在方法中,你可能已經(jīng)看到這篇文章,并尋找能夠轉(zhuǎn)儲(chǔ)方法的 SSA 輸出。

要為指針方法 func (n *Numbers) Add 打印 SSA 調(diào)試,等效函數(shù)名為 (*Numbers).Add[2]

% env "GOSSAFUNC=(*Numbers).Add" go buildtdumped SSA to ./ssa.html

要為值方法 func (n Numbers) Average 打印 SSA 調(diào)試,等效函數(shù)名為 (*Numbers).Average,即使這是一個(gè)值方法

% env "GOSSAFUNC=(*Numbers).Average" go buildtdumped SSA to ./ssa.html

  1. 如果你沒有從源碼構(gòu)建 Go,那么 runtime 軟件包的路徑可能是只讀的,并且可能會(huì)收到錯(cuò)誤消息。請不要使用 sudo 來解決此問題。

  2. 請注意 shell 引用 。

到此,關(guān)于“在Go中怎么轉(zhuǎn)儲(chǔ)GOSSAFUNC圖”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

go
AI