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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

golang 的 `set -x`:打印每個(gè)執(zhí)行的行?

golang 的 `set -x`:打印每個(gè)執(zhí)行的行?

Go
米琪卡哇伊 2023-01-03 11:23:50
是否有類似set -xgolang 的 shell 功能?我想查看執(zhí)行的每一行代碼。不應(yīng)打印標(biāo)準(zhǔn)庫(kù)的行。
查看完整描述

2 回答

?
忽然笑

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊

您可以使用 pprof組合:

  • 概要分析,它可以幫助您了解誰(shuí)調(diào)用了什么,調(diào)用了多長(zhǎng)時(shí)間

http://img1.sycdn.imooc.com//63b3a0150001e76d10590681.jpg

ofabry/go-callvis也可以幫助查看調(diào)用圖)

  • 它的 Weblist 視圖顯示了每條已執(zhí)行的行及其成本:

http://img1.sycdn.imooc.com//63b3a021000135ce19510893.jpg

請(qǐng)參閱本指南中的“交互式分析” 。

這不會(huì)顯示按順序執(zhí)行的每一行,但允許您在運(yùn)行后探索執(zhí)行的內(nèi)容。


請(qǐng)注意,Go 1.20/1.21(2022 年第 4 季度/2023 年第 2 季度)將包括(因?yàn)榻邮芰?a >#55022):

Go 的配置文件引導(dǎo)優(yōu)化 (PGO)

Go 程序中的低效率可以通過(guò)分析工具(例如pproflinux profiler )來(lái)隔離perf。此類工具可以查明花費(fèi)大部分執(zhí)行時(shí)間的源代碼區(qū)域。

與其他優(yōu)化編譯器(如 LLVM)不同,Go 編譯器尚未執(zhí)行Profile-Guided Optimization(PGO)。
PGO 使用有關(guān)代碼運(yùn)行時(shí)行為的信息來(lái)指導(dǎo)編譯器優(yōu)化,例如內(nèi)聯(lián)、代碼布局等。PGO 可以將應(yīng)用程序性能提高 15-30% [LLVM、AutoFDO]。

在這個(gè)提案中,我們用 PGO 擴(kuò)展了 Go 編譯器。

具體來(lái)說(shuō),我們將配置文件合并到編譯器的前端,以構(gòu)建具有節(jié)點(diǎn)和邊權(quán)重(稱為WeightedCallGraph)的調(diào)用圖。Inliner 隨后使用WeightedCallGraph來(lái)執(zhí)行配置文件引導(dǎo)的內(nèi)聯(lián),該內(nèi)聯(lián)積極地內(nèi)聯(lián)熱函數(shù)。

我們引入了一個(gè)配置文件引導(dǎo)的代碼專業(yè)化通道,它與 Inliner 緊密集成,并消除了熱代碼路徑中的間接方法調(diào)用開(kāi)銷。

此外,我們使用相關(guān)的配置文件權(quán)重注釋 IR 指令,并將這些指令傳播到 SSA 級(jí)別,以促進(jìn)配置文件引導(dǎo)的基本塊布局優(yōu)化,從而從更好的指令緩存和 TLB 性能中獲益。

最后,我們擴(kuò)展了 Go 的鏈接器以直接使用配置文件并跨包邊界執(zhí)行函數(shù)重新排序優(yōu)化——這也有助于指令緩存和 TLB 性能。

pprof我們的 PGO 使用的配置文件格式與該工具生成的 protobuf 格式相同。這種格式足夠豐富,可以攜帶額外的硬件性能計(jì)數(shù)器信息,例如緩存未命中、LBR 等。Google
現(xiàn)有perf_data_converter的工具可以將perf.dataLinuxperf生成的profile.proto文件轉(zhuǎn)換為 protobuf 格式的文件。

Go 中將針對(duì) PGO 提出一個(gè)新的編譯流程

http://img1.sycdn.imooc.com//63b3a03100014bb713670521.jpg

查看完整回答
反對(duì) 回復(fù) 2023-01-03
?
精慕HU

TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊

由于 Go 是一種編譯語(yǔ)言,可執(zhí)行文件不包含任何原始源代碼,因此無(wú)法輸出。您最接近您想要的方法是在調(diào)試模式下運(yùn)行您的 Go 項(xiàng)目并單步執(zhí)行每一行代碼。

這樣你就可以在運(yùn)行時(shí)決定跳轉(zhuǎn)到一個(gè)函數(shù)或者只是執(zhí)行它并跳過(guò)它,因?yàn)檎{(diào)試器不會(huì)知道你認(rèn)為什么是“標(biāo)準(zhǔn)庫(kù)”,什么應(yīng)該逐行跟蹤,什么不是。

另一方面,Go 可以是帶有 go 例程的大量多線程,因此打印每條執(zhí)行的行可能會(huì)在一分鐘內(nèi)變得一團(tuán)糟(有時(shí)我有超過(guò) 100 個(gè)例程同時(shí)運(yùn)行)。


查看完整回答
反對(duì) 回復(fù) 2023-01-03
  • 2 回答
  • 0 關(guān)注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

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