簡體   English   中英

為什么 Golang for 循環比 Python for 循環慢?

[英]Why Golang for loop is slower than Python for loop?

我已經測試了 golang 在 for 循環上的執行情況

僅在 python 和 golang 中循環 50,000 次,我發現在 python 中花費了 0.59 秒,而在 golang 中花費了 9.12 秒

任何有經驗的 go 開發人員可以告訴我為什么 Golang 在 for 循環中太慢,而它是一種編譯語言?


import (
    "fmt"
    "time"
)
func main()  {
    start := time.Now()

    for i := 0; i < 50000; i++ {
         fmt.Println("Index", i)
    }

    finish := time.Now().Sub(start).Seconds()
    fmt.Printf("Elapsed time was %.2f seconds.\n", finish)
}

你沒有測量你認為你正在測量的東西,這就是為什么你會得到“令人驚訝”的結果。

您正在計時格式化和打印字符串需要多長時間,而不是“for 循環有多快”。

此外,請記住,衡量打印某些內容需要多長時間不僅取決於代碼的編譯/解釋方式,還取決於您打印的確切位置:I/O 性能取決於您的程序之外的內容(也許操作系統,也許是一些物理設備等)。

最后,如果您嘗試對完全不執行任何操作的循環的性能進行微基准測試,編譯器可以檢測到這一點並簡單地完全優化循環,讓您無需測量任何東西......

在大多數情況下,這些孤立的微基准是沒有用的。 如果您想在性能方面比較 Python 和 Go,通常最好測試一個實際問題而不是人工測試。 然后不僅比較原始性能,還比較一般代碼質量的其他特征。

最重要的是,這個基准有太多錯誤,無法得出任何有用的結論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM