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

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

為什么非常短的時間。睡眠時間比基準測試中要求的時間(大約 300 ns)長?

為什么非常短的時間。睡眠時間比基準測試中要求的時間(大約 300 ns)長?

Go
慕容3067478 2023-02-06 18:58:39
我正在玩 Go 中的基準測試,我有一個簡單的函數(shù),它只休眠 5 納秒,但是當我運行基準測試時,它顯示298.1  ns/op. 我很好奇為什么會這樣。不應該5 ns/op嗎?去版本:go version go1.19 linux/amd64代碼:package andreiimport (    "testing"    "time")func Hi() {    time.Sleep(5 * time.Nanosecond)}func BenchmarkHi(b *testing.B) {    for i := 0; i < b.N; i++ {        Hi()    }}結果:$ go test -run none -bench  . -benchmem ./andreigoos: linuxgoarch: amd64pkg: andrei/andreicpu: 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHzBenchmarkHi-8            3861392               298.1 ns/op             0 B/op          0 allocs/opPASSok      andrei/andrei   1.470s
查看完整描述

2 回答

?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

time.Sleep只保證它至少會睡到參數(shù)一樣長的時間。它實際休眠多長時間取決于您的操作系統(tǒng)和其他因素。

在 Windows 上,它至少休眠 1.9 毫秒。在我的 MacBook 上,我得到 408 ns/op,而你看到的是 298.1 ns/op。

您可以在 Go github 存儲庫中的這張票中找到有關此問題的更多詳細信息:

https://github.com/golang/go/issues/29485


查看完整回答
反對 回復 2023-02-06
?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

文章“ How to Write Accurate Benchmarks in Go ”(Teiva Harsanyi,2022 年 8 月)和基準維基頁面都提到perflock(在 Linux 上):

我們應該確保執(zhí)行基準測試的機器是空閑的。但是,外部進程可能會在后臺運行,這可能會影響基準測試結果。

出于這個原因,諸如 之類的工具perflock可以限制基準測試可以消耗多少 CPU。

例如,我們可以使用總可用 CPU 的 70% 運行基準測試,將 30% 分配給操作系統(tǒng)和其他進程,并減少機器活動因素對結果的影響。

另請參閱“問題 44343::runtimetime.Sleep預期花費更多時間”。

對于 Linux,我們應該使用epoll_pwait2,例如https://go.dev/cl/363417。
這個系統(tǒng)調用是較新的,但這將改進未來的事情并為特別受影響的用戶提供解決方法(升級內核)。


查看完整回答
反對 回復 2023-02-06
  • 2 回答
  • 0 關注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號