Proč je Go tak pomalý?

Kit

Re:Proč je Go tak pomalý?
« Odpověď #15 kdy: 30. 04. 2017, 21:11:38 »
Tady není řeč o rychlosti vývoje, ale úplně o něčem jiném, jestli sis nevšiml. Tak si to laskavě nech a vyjadřuj se k tématu. Mezi performance testy je i binární strom a to mi opravdu nepřijde jako nějaké nefér srovnání výkonu.

Zrovna ten binární strom je v Go chybně implementován a to je fakt vůči Go nefér.


siudyiap

Re:Proč je Go tak pomalý?
« Odpověď #16 kdy: 30. 04. 2017, 21:11:52 »
Kódy na benchmarksgame.alioth.debian.org nejsou vždy to nejlepší co se dá udělat. Cčko mělo hodně pozornosti a má tam fakt optimalizovaný kódy, nemusí to být případ dalších jazyků. Skoro půlrok mi tam visel k-nucleotide v Rustu co byl cca 3x pomalejší než C než si toho všiml někdo zkušenější a poslal tam něco co překonalo Cčko.

Go tam má asi polovinu příkladů srovnatelných s C. Kde je pomalejší jsou:
binary-tree: alokace a dealokace. Go má GC a nevidím tu nic co by ho optimalizovalo. Asi není super-optimalizované
n-body: hodně operací s floatama
fannkuch-redux: (tady nemám tucha co to benchmarkuje)
k-nucleotide: hashmapy, v zadání je že se nemá implementovat vlastní a vyžaduje použití buď build-in nebo polulární knihovny. To v C je trochu podivné, asi bych to nechtěl použít ve skutečném programu. Go opravdu používá build-in.
regex-redux: regex

Go se mi docela líbí. Je jednoduché, kompakní syntax, základ se dá naučit přes víkend, není OOP. Asi bych se nestyděl doporučit to jako první jazyk.

Ivan Nový

Re:Proč je Go tak pomalý?
« Odpověď #17 kdy: 30. 04. 2017, 21:13:02 »
RPython to je překlad do C.

gll

Re:Proč je Go tak pomalý?
« Odpověď #18 kdy: 30. 04. 2017, 21:16:12 »
Jaký máte vůbec názor na Golang? Teď na něj budu v práci přecházet a na netu neslyším zrovna chválu.

Na Golang názor nemám, ale členové komunity zde na rootu nepůsobí moc přátelským dojmem.

gll

Re:Proč je Go tak pomalý?
« Odpověď #19 kdy: 30. 04. 2017, 21:20:50 »
RPython to je překlad do C.

Cython je v praxi používaný.


Kit

Re:Proč je Go tak pomalý?
« Odpověď #20 kdy: 30. 04. 2017, 21:37:39 »
Jaký máte vůbec názor na Golang? Teď na něj budu v práci přecházet a na netu neslyším zrovna chválu.

Na Golang názor nemám, ale členové komunity zde na rootu nepůsobí moc přátelským dojmem.

Golang jsem dodnes neviděl, ale díky tomuto dotazu jsem si ho vyzkoušel. Docela se mi ten jazyk zalíbil, určitě si v něm ještě nějaký prográmek napíši - nejspíš to bude nějaký malý server nebo třeba vlastní implementace Lispu.

mikrom

Re:Proč je Go tak pomalý?
« Odpověď #21 kdy: 30. 04. 2017, 22:07:14 »
Že aktuálně neznám ekvivalent. C je moc low level, v C++ je překomplikovaný relikt, Python je pomalý a nic jiného, co by se kompilovalo přímo do strojového kódy, mělo to GC a bylo to populární, tu není, jen Go.
A  co tak skusit D

zen

Re:Proč je Go tak pomalý?
« Odpověď #22 kdy: 30. 04. 2017, 22:30:40 »
Že aktuálně neznám ekvivalent. C je moc low level, v C++ je překomplikovaný relikt, Python je pomalý a nic jiného, co by se kompilovalo přímo do strojového kódy, mělo to GC a bylo to populární, tu není, jen Go.

Okrem go je tu este D, Rust, Swift a Vala...

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Proč je Go tak pomalý?
« Odpověď #23 kdy: 30. 04. 2017, 23:07:20 »
Že aktuálně neznám ekvivalent. C je moc low level, v C++ je překomplikovaný relikt, Python je pomalý a nic jiného, co by se kompilovalo přímo do strojového kódy, mělo to GC a bylo to populární, tu není, jen Go.

Okrem go je tu este D, Rust, Swift a Vala...
Rust vypadá poměrně zajímavě, ale nemám s ním bližší zkušenosti. D dtto. Swift je hodně slibný, ale je prozatím zabugovaný (překladač i standardní knihovna). Go je oproti Swiftu zralejší a podstatně jednodušší (KISS), i když čím více v něm člověk dělá, tím víc objevuje různé záludnosti. Rozhodně však není pomalé, oproti Javě je znatelně efektivnější (na optimalizovaný kód v C se pochopitelně nechytá nic). A taky o něm evidentně existuje hodně mýtů (nejlepší je učit se jej z prací Pika a spol.), jak dosvědčují příspěvky místního ksindlu.

Re:Proč je Go tak pomalý?
« Odpověď #24 kdy: 01. 05. 2017, 01:27:46 »
No a když už jsme teda u toho, proč není Go transofrmovatelný do C, tak neexistuje nad Céčkem nějaká jazyková OOP nadstavba, která by přío generovala Céčkový kód a až ten by se pak kompiloval?
To je naivní a (obecně) chybný předpoklad, že kdyby se z X generovalo "něco" v "tom rychlém" C, tak by z toho plynulo, že by bylo rychlé X.

Před lety jsem takový projekt implementující OOP do C viděl, bohužel si již nevzpomenu na jméno. Nezkoušel jsem, takže o něm nemohu nic moc říci. Tehdy byl v experimentálním stavu a přišlo mi zbytečné použít jej místo použití malé podmnožiny C++.
Myslíš https://wiki.gnome.org/Projects/Vala ? Ten je afaik už docela dlouho (polo)mrtvý.

Jaký máte vůbec názor na Golang?
Jazyk s jasnu agendou/myšlenkou, kterou velmi slušně naplňuje. Na můj vkus trochu moc jednoduchý. Tak mi přijde z pročítání materiálů, osobně jsem v něm nic nedělal.

Mezi performance testy je i binární strom a to mi opravdu nepřijde jako nějaké nefér srovnání výkonu.
Je to srovnání hrubého výkonu - jde o spíš jednodušší number crunching. O vhodnosti pro konkrétní praxi to nemusí vypovídat vůbec nic (např. pokud jazyk umožňuje snadno paralelizovat i složitější programy - tj. líp vytížit víc jader CPU, vhodněji cachovat atd. atd., může to být v praxi větší výhoda než samotný hrubý výkon).

bez podpory pro procedurální programování
To si teď nějak neumím představit - co konkrétně by v tom jazyce nebylo a jak a čemu by to pomohlo? :)

Ještě existuje jakýsik Rust, prý C++ gona right, ale ten jsem nezkoušel.
Rust jsem viděl z rychlíku tady na Root.cz a na prezentaci Pavla Tišnovského a vypadá fakt dobře. Ve finále ale stejně bude záležet na velikosti komunity. Bez ní bude těžko použitelný i kdyby to byl svatý grál designu programovacích jazyků... a z toho bych měl obavu, bohužel.

Re:Proč je Go tak pomalý?
« Odpověď #25 kdy: 01. 05. 2017, 01:32:51 »
nejlepší je učit se jej z prací Pika
https://en.wikipedia.org/wiki/Pika bych určitě nedoporučoval, to není ani hlodavec! Jedině z prací https://cs.wikipedia.org/wiki/Pytlono%C5%A1ovit%C3%AD !

. (jiná) :)

Re:Proč je Go tak pomalý?
« Odpověď #26 kdy: 01. 05. 2017, 01:42:18 »
Jedná se o microbenchmarky a tak je k tomu potřeba přistupovat. Vezměme třeba ten pro Go nejhorší, binary-tree.
Ve své podstatě se jedná o benchmark testující průchodnost GC. Tady je výtah z podmínek testu:
Kód: [Vybrat]
Use default GC, use per node allocation or use a library memory pool.
As a practical matter, the myriad ways to tune GC will not be accepted.
As a practical matter, the myriad ways to custom allocate memory will not be accepted.
Please don't implement your own custom "arena" or "memory pool" or "free list" - they will not be accepted.
To ve své podstatě značně diskvalifikuje jakýkoliv jazyk s GC. Jednoduchým nastavením GC zrychlíte tento test pro Go zhruba 2,3x. Ale toto není akceptováno. Co se potom poměřuje mi ale není jasné.
Díval jsem se na testy výkonosti jazyka Go a oproti C je dost pomalý. Samozřejmě je i pomalejší než Java nebo C#.
Možná se díváme na jiné testy, ale pokud myslíte benchmarksgame, nevidím, že by bylo Go samozřejmě pomalejší než Java nebo C#. Je srovnatelné a dokonce bych podle srovnání řekl v průměru i krapánek rychlejší.
http://benchmarksgame.alioth.debian.org/u64q/which-programs-are-fastest-firstlast.svgz
A to nemluvíme o tom, že GC v Go je optimalizován pro latenci, což se v žádném benchmarku neprojeví a minimalizuje alokace na haldě, což se v těchto microbenchmarcích taky moc neprojeví.

A v neposlední řadě by stálo za to se podívat i na sloupeček mem. Java tam má 2,5-30x větší čísla než Go. (Nepsal tu někdo před nedávnem, že Java je stejně paměťově náročná, jako každý jiný jazyk?) No a C# je na tom v této kategorii ještě hůře než Java.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Proč je Go tak pomalý?
« Odpověď #27 kdy: 01. 05. 2017, 02:45:57 »
nejlepší je učit se jej z prací Pika
https://en.wikipedia.org/wiki/Pika bych určitě nedoporučoval, to není ani hlodavec! Jedině z prací https://cs.wikipedia.org/wiki/Pytlono%C5%A1ovit%C3%AD !
A o genitivu jsi už slyšel?  :P

Re:Proč je Go tak pomalý?
« Odpověď #28 kdy: 01. 05. 2017, 09:08:41 »
A o genitivu jsi už slyšel?  :P
Ano, ale správně se to píše genitÁL, pane suvenýr!

m.

Re:Proč je Go tak pomalý?
« Odpověď #29 kdy: 01. 05. 2017, 11:30:37 »
We want easy answers, but easy answers are often incomplete or wrong. You and I know, there's more we need to understand.