[英]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.