C nebo Rust?

scraper

C nebo Rust?
« kdy: 11. 09. 2018, 13:25:45 »
moje pouziti by byla vicevlaknova extrakce dat z velkeho mnozstvi webovych zdroju napr za pouziti xpath. Musi to bezet 24/7/365

V soucasnosti to mam udelane v Pythonu a nejsem spokojeny. Python doted neumi uvolnit vsechnu jiz nepouzivanou pamet zpet systemu, takze to vypada jako kdyz leakuje pamet coz neni tento pripad.

Advokati pythonu bez legrace doporucuji tyto pripady obejit pres dalsi procesy, coz mi vytvari dalsi zatez na cpu oproti threadum


muj cil je co nejnizsi cpu zatez a memory footprint

popr. muzete doporucit i jiny jazyk


java

Re:C nebo Rust?
« Odpověď #1 kdy: 11. 09. 2018, 13:28:06 »
Java

mb

Re:C nebo Rust?
« Odpověď #2 kdy: 11. 09. 2018, 13:42:06 »
Rozumne sa to da v c alebo c++ (pokial ide o minimalne naroky), na pracu so sietou (ak to teda ma aplikacia sama tahat) postaci par vlakien pre polling, potom par vlakien na spracovanie. Otazka je co s vysledkami, tie sa mozu ukladat na pozadie do suboru alebo niekam posielat... Otazka je, ako xpath pokryje obsah z webu...
Obvykle sa pamat systemu nevracia, ale ak je to fakt nutne, glibc malloc a tcmalloc to vedia.

Joskoo

Re:C nebo Rust?
« Odpověď #3 kdy: 11. 09. 2018, 13:45:27 »
Nenapisem ti sice aky jazyk ano ale napisem ti preco by som do "C" nesiel.

Z mojho pohladu je C super jazyk, jasne pravidla, dostupna literatura a dobry kompilator, prehladny.. mam ho rad a denno-denne ho pouzivam. ale...

Osobne asi pred rokom(?) som sa pustil do vacsieho projektu v C (multi-thread) a ... nieje to ziadna sranda, uz len napisat dobry kod zabere cas + musis byt o krok vopred.. mno, niekedy sa sam seba pytam preco som nepouzil C++ asi to bola v tej dobe vyzva..

Asi by som siel do niecoho "vyssieho" co ponuka v libkach viac ako "C"... C++11

Re:C nebo Rust?
« Odpověď #4 kdy: 11. 09. 2018, 14:04:43 »
Dost možná, že Cčko, C++ se bude chovat podobně. Namapovaná paměť zůstává procesu do konce procesu - to je vlastnost glibc.


Daniel Kozak

Re:C nebo Rust?
« Odpověď #5 kdy: 11. 09. 2018, 14:16:37 »
moje pouziti by byla vicevlaknova extrakce dat z velkeho mnozstvi webovych zdroju napr za pouziti xpath. Musi to bezet 24/7/365

V soucasnosti to mam udelane v Pythonu a nejsem spokojeny. Python doted neumi uvolnit vsechnu jiz nepouzivanou pamet zpet systemu, takze to vypada jako kdyz leakuje pamet coz neni tento pripad.

Advokati pythonu bez legrace doporucuji tyto pripady obejit pres dalsi procesy, coz mi vytvari dalsi zatez na cpu oproti threadum


muj cil je co nejnizsi cpu zatez a memory footprint

popr. muzete doporucit i jiny jazyk

Mne se na tento typ uloh osvedcil jazyk D (dlang.org), pripadne bych se nebal pouzit c++17

ava

Re:C nebo Rust?
« Odpověď #6 kdy: 11. 09. 2018, 14:32:56 »
V Rustu něco podobnýho dělá někdo tady: https://www.youtube.com/watch?v=LNABJvABhos . Když se člověk Rust naučí, je podle mě určitě pohodlnější na vývoj než C++, ale naučit se Rust do hloubky trvá (to samozřejmě i C++). Jestli u toho nechceš trávit moc času, uvažoval bych o Go, to je jazyk který se naučíš za chvíli a na takovéhle úlohy je jako ušitý.

balki

Re:C nebo Rust?
« Odpověď #7 kdy: 11. 09. 2018, 15:21:14 »

kkt1

  • *****
  • 796
    • Zobrazit profil
Re:C nebo Rust?
« Odpověď #8 kdy: 11. 09. 2018, 15:37:06 »
Java. Zkusenost z projektu kde se taha paralelne (a na vice serverech) klidne na 10k+ vlaken. Low memory footprint to nema, na cpu je to nenazrane, ale imho pro ten projekt nejlepsi volba (data jdou do rac, pak to spracovavaji dalsi stroje zase v java). Nekdo rikal ze go je idealni pro internetove veci, zkus se treba podivat. Pokud je to domaci projekt na rpi tak pouzi klidne c.

x14

  • ***
  • 182
    • Zobrazit profil
    • E-mail
Re:C nebo Rust?
« Odpověď #9 kdy: 11. 09. 2018, 16:07:39 »
C? Ani náhodou! Když už tak C++.

m

Re:C nebo Rust?
« Odpověď #10 kdy: 11. 09. 2018, 16:19:57 »
Advokati pythonu bez legrace doporucuji tyto pripady obejit pres dalsi procesy, coz mi vytvari dalsi zatez na cpu oproti threadum

thready v pythonu - kdyz mas IO bound zatez

multiprocessing kdyz mas CPU bound zatez

kdyztak pouzit python 3.6+ a podivat se na async.

A ne s jakymkoliv GC se ti bude zdat ze to uvolnuje pamet pomalu. A pokud to Fakt leakuje tak tam mas nekde chybu.

BTW. skoro vsechny xml parsery jsou brany jako unsafe

n

Re:C nebo Rust?
« Odpověď #11 kdy: 11. 09. 2018, 16:54:00 »
Pokud chces maximalni vykon a npotrebujes skalovat pres vice servru najednou, tak urcite c++. Pokud potrebujes obecne skalovatelnou vec, tak to pak zalezi na frameworku ale obavam se ze v c++ nic free nenajdes.

n

Re:C nebo Rust?
« Odpověď #12 kdy: 11. 09. 2018, 16:55:54 »
Obecne skalovatelnou - myslim multi-zelezovou.
Jinak aspon c++14, idealne c++17

Xxxxxx

Re:C nebo Rust?
« Odpověď #13 kdy: 11. 09. 2018, 17:20:20 »
Ja osobne bych to vyuzil k tomu, ze bych se poradne naucil Go.
pak az to co umim java nebo c++17

borekz

  • ****
  • 492
    • Zobrazit profil
    • E-mail
Re:C nebo Rust?
« Odpověď #14 kdy: 11. 09. 2018, 19:25:13 »
Dost možná, že Cčko, C++ se bude chovat podobně. Namapovaná paměť zůstává procesu do konce procesu - to je vlastnost glibc.
Ano, je to vlastnost glibc a nikoliv samotného jazyka. C má tu výhodu, že si alokaci můžu řešit sám přesně podle potřeb aplikace. Java sice umí vracet paměť operačnímu systému, ale memory footprint bude mít násobně vyšší než ruční lowlevel implementace.