Cim vyssi uroven jazyku tim vetsi praseni. Jednak kvuli tvorbe kodu neprogramatory a pak kvuli mnoho abstraktnim vrstvam. Neexistuje projekt, ktery by pouzitim vyssiho/komplexnejsiho jazyka nabyl na rychlosti nebo se zmensil. Low level asm/C v obou techto metrikach vede, ale poklada urcite naroky na tvurce programu.
"Cim vyssi uroven jazyku tim vetsi praseni."
To je... odvazne tvrzeni.
"Neexistuje projekt, ktery by pouzitim vyssiho/komplexnejsiho jazyka nabyl na rychlosti nebo se zmensil."
Pomineme to, ze bezpecnost >> rychlost.
S touhle filosofii by se melo v kernelu zahodit i to C, ne? (Nemluve o tom, ze to tak ci onak neni pravda. Viz gecko vs servo. Samozrejme to neni zasluha _jen_ lepsiho jazyka, ale i toho, ze proste v tom lepsim jazyce se dalo snadneji napsat neco rychleho.)
"Viz gecko vs servo"
Odkaz na test na 1 core a bez GPU mate? (a doufam ze se bude porovnavat kod stejneho stari - rekneme 6 ci 12 mesicu od doby vzniku kodu a ne nejaky desetiletim nabalovany balast).
Bezpecnost je relativni - jazyk vam ho nezaruci. A pokud se jedna kvuli bezpecnosti treba i o jen primitivni kontrolu rozsahu pole, tak kazdy pristup musi kvuli ni provest boundary check? - tak to vime jak to dopadne s vykonem. A o tomto jsem mluvil - ze prechod na vyssi jazyk (treba prave z duvodu "bezpecnosti") bude znamenat pomalejsi sw.
"Odkaz na test na 1 core a bez GPU mate?"
A budeme merit zavodni auta v konfiguraco bez benzinu a tazena konem?
"a doufam ze se bude porovnavat kod stejneho stari - rekneme 6 ci 12 mesicu od doby vzniku kodu a ne nejaky desetiletim nabalovany balast"
Aha. Takze ty jsi chtel priklad noveho projektu, ktery nekdo rovnou prepsal?
"Bezpecnost je relativni - jazyk vam ho nezaruci."
Ano. Ale pomuze.
"A pokud se jedna kvuli bezpecnosti treba i o jen primitivni kontrolu rozsahu pole, tak kazdy pristup musi kvuli ni provest boundary check?"
Ne, nemusi.
Hmm ... Podle jakých? Ušitých na míru Rustu? Idiomatický Rust a idiomatické C? Neřekl bych. Každý napíše benchmark kde jeho favorit vyhraje a ten druhý to projede.
Prvně by se slušelo říci, že porovnávat Rust a C nedává moc smysl. V Rustu můžu napsat nachlup stejný kód jako v C a rychlost bude stejná. Porovnávat se dá leda tak idiomatický Rust s idiomatickým C. Ano, v tomhle případě je Rust v některých věcech rychlejší. V C mám dva ukazatele a překladač neví jestli to je jeden objekt nebo dva různé. C tedy musí být konzervativnější, ale Rust to ví a může optimalizovat mnohem agresivněji. Na druhou stranu, Rust je v některých věcech pomalejší. Sice zrychluje, opravuje chyby, ale stále tu máme dost problémů. Stačí se podívat na label:I-slow.
A to píšu jako velký fanoušek Rustu a někdo, kdo se Rustem už přes 2 roky živí.
v benchmarks game je to celkem vyrovnané, ty úlohy byly vymyšleny před vznikem Rustu.
https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/rust.html
Na uvodni strance tech benchmarku je jich vylistovanych 10. Z toho v 6/10 vyhrava C a v 4/10 Rust. Jsem na mobilu, dalsi jsem nezkoumal a do zdrojaku nekoukal.
Nejdriv pises, ze je Rust rychlejsi nez C. Posleze, ze je to celkem vyrovnane.
Ja jen rikam, ze obecne tvrzeni „Rust je rychlejsi nez C“ neplati.
Ale implementace ne :P. Jde o to že zadání úlohy je jedna věc ale algoritmus a další věci jsou to oč tu běží. Jinak v tom co píšete spíš porovnáváte llvm vs gcc.
Asi před rokem možná dvěma, jsem strávil nějaký ten volný čas a ty testy co tam jsou jsem napsal v jazyku D. A světe div se vždy jsem dokázal napsat nejrychlejší verzi (a kolikrát i o více jak 30 procent) aspoň v jedné z implementací (ldc - llvm, gdc - gcc, dmd - dmc).