Aktywne Wpisy
Roess +41
Zbiornik w Raciborzu oddany w 2020 r. ale nieeeee... pis nie budował wałów xxxDDDD
#powodz
#powodz
JeszczeZyje +39
#powodz to ten zbiornik Racibórz łapie wodę co idzie z Czech ale teraz na Wrocław idzie to całe g---o z lewej?
Kod
Gdy zakomentuje funkcje anonimowaw i puszcze tylko
go fuzzy.EditDistance(str1, str2+strconv.Itoa(i))
czas wykonania to ok 330msfor i := 0; i < 1000000; i++ {
go fuzzy.EditDistance(str1, str2+strconv.Itoa(i)) // 330.1175ms
//go func(str1 string, str2 string, i int) {
// fuzzy.EditDistance(str1, str2+strconv.Itoa(i))
//}(str1, str2, i)
}
Gdy odpalam tylko funckje anonimową czas wykonania wynosi ok 3 sekund
for i := 0; i < 1000000; i++ {
//go fuzzy.EditDistance(str1, str2+strconv.Itoa(i))
go func(str1 string, str2 string, i int) {
fuzzy.EditDistance(str1, str2+strconv.Itoa(i))
}(str1, str2, i) // 3.166537s
}
Natomiast najbardziej ciekawe jest to gdy obie operacje wykonywane są jednocześnie czas wynosi ok 700ms
for i := 0; i < 1000000; i++ {
go fuzzy.EditDistance(str1, str2+strconv.Itoa(i))
go func(str1 string, str2 string, i int) {
fuzzy.EditDistance(str1, str2+strconv.Itoa(i))
}(str1, str2, i)
// Razem 705.114ms
}
#golang #go #programowanie
tez taktyk, bo pewnie ktoś mądrzejszy napisze coś mądrego
Sprawdziłem wygenerowane kody, wyglądają całkiem podobnie. Jeśli odpalę z GOMAXPROCS=1, to jest 1.60s, 1.85s, 3.20s, więc podobnie. IMHO optymalizacje kompilatora odgrywają małą rolę w tym przypadku ;p
perf stat -e cache-references,cache-misses pokazuje 1.5%, 40%, 2% cache misses, więc pewnie problem leży w tym jak scheduler GO wykonuje te funkcje :)