Existuje jazyk, ktery...

anonym

Existuje jazyk, ktery...
« kdy: 18. 08. 2018, 16:02:11 »
mi umozni z:

get("/muj/uri/template/{id}, MojeService::metoda, request, response) ||
post("/muj/uri/template/{id}, MojeService::metoda, request, response);

zobecnic parametry metody request a response do nadrazene funkce takto:

Router.route(request, response)
.get("/muj/uri/template/{id}, MojeService::metoda)
.post("/muj/uri/template/{id}, MojeService::metoda);

A to tak, ze to bude kompletne bez instanciovani novych objektu?

V Jave samozrejme 2. moznost lze udelat snadno, jedna se v podstate o stejny princim jakym funguji streamy, nicmene prinejmensim .route bude instanciovat novy objekt.

Jeste pripominam, pokud to neni uz zrejme, ze nelze priblem vyresit pouzitim stavove tridy, protoze aplikace je vicevlaknova.

***
Duvodem proc nechci vytvaret nove objkety je zbytecne horsi performance.

(PS: Jirsak ne)


Jirsák

Re:Existuje jazyk, ktery...
« Odpověď #1 kdy: 18. 08. 2018, 16:06:08 »
Jirsáku, nebyBrnol tu podobný dotaz už o techto prazninách?

Rezervní Polská Kotace

Re:Existuje jazyk, ktery...
« Odpověď #2 kdy: 18. 08. 2018, 16:32:45 »
Duvodem proc nechci vytvaret nove objkety je zbytecne horsi performance.

Kolik těch objektů řádově bude, že si myslíš, že by to mělo negativní vliv na výkon?

Buď jde o trolling ve stadiu pokusu, nebo dalšího lamu, který si myslí, že dělá příští Twitter/Google/eBay a přitom píše milióntý první CMS pro osobní blog nebo e-shop pro prodej pastiček na myši na nějakém maloměstě.

Tohle jde v klidu napsat i v jazycích Ponkrác++ nebo Jirsák EE.

Re:Existuje jazyk, ktery...
« Odpověď #3 kdy: 18. 08. 2018, 16:39:45 »
Výkonu bych se nebál, až budete řešil aplikace, kde by to vadilo, tak se už nebudete muset ptát na rootu  :)

Jinak nepomohl by náhodou pattern matching ála scala?

Zat

Re:Existuje jazyk, ktery...
« Odpověď #4 kdy: 18. 08. 2018, 16:43:26 »
Asi jakýkoliv funkcionální jazyk.


mmm

Re:Existuje jazyk, ktery...
« Odpověď #5 kdy: 18. 08. 2018, 18:16:58 »
Javascript.

anonym

Re:Existuje jazyk, ktery...
« Odpověď #6 kdy: 18. 08. 2018, 18:38:57 »
Výkonu bych se nebál, až budete řešil aplikace, kde by to vadilo, tak se už nebudete muset ptát na rootu  :)

Jinak nepomohl by náhodou pattern matching ála scala?

ne nepomoh, ja se kurva  neptám na to, jak udělat HTTP router, ptám se, v jakém jazyce se dá provádět taková operace nad funkcema.

Honza

Re:Existuje jazyk, ktery...
« Odpověď #7 kdy: 18. 08. 2018, 19:47:08 »
ptám se, v jakém jazyce se dá provádět taková operace nad funkcema.
ve kterémkoliv, pomíjím, že ten původní požadavek nedává smysl

kkt1

  • *****
  • 796
    • Zobrazit profil
Re:Existuje jazyk, ktery...
« Odpověď #8 kdy: 18. 08. 2018, 19:54:07 »
Takze: chces mit silenou performance proto se ptas na rootu.  ::) Podle me resis zbytecne jazyk, pokud chces to nejrychlejsi napis si to v assembleri.

anonym

Re:Existuje jazyk, ktery...
« Odpověď #9 kdy: 18. 08. 2018, 19:59:29 »
Takze: chces mit silenou performance proto se ptas na rootu.  ::) Podle me resis zbytecne jazyk, pokud chces to nejrychlejsi napis si to v assembleri.

Já se ale na to neptám na rootu proto, aby mi odpovídal Kokot - nebo ty máš ten dojem?

anonym

Re:Existuje jazyk, ktery...
« Odpověď #10 kdy: 18. 08. 2018, 20:04:32 »
ptám se, v jakém jazyce se dá provádět taková operace nad funkcema.
ve kterémkoliv, pomíjím, že ten původní požadavek nedává smysl

Smysl nedáváš ty už od dob, co jsi se jako nejblbejsi spermie převaloval v tatove ručníků.

kimec

Re:Existuje jazyk, ktery...
« Odpověď #11 kdy: 18. 08. 2018, 21:32:10 »
mi umozni z:

get("/muj/uri/template/{id}, MojeService::metoda, request, response) ||
post("/muj/uri/template/{id}, MojeService::metoda, request, response);

zobecnic parametry metody request a response do nadrazene funkce takto:

Router.route(request, response)
.get("/muj/uri/template/{id}, MojeService::metoda)
.post("/muj/uri/template/{id}, MojeService::metoda);

A to tak, ze to bude kompletne bez instanciovani novych objektu?

V Jave samozrejme 2. moznost lze udelat snadno, jedna se v podstate o stejny princim jakym funguji streamy, nicmene prinejmensim .route bude instanciovat novy objekt.

Jeste pripominam, pokud to neni uz zrejme, ze nelze priblem vyresit pouzitim stavove tridy, protoze aplikace je vicevlaknova.

***
Duvodem proc nechci vytvaret nove objkety je zbytecne horsi performance.

(PS: Jirsak ne)
Kde presne si myslite, ze vo vasom priklade vznikaju nove objekty?
Method reference sa sprava ako lazy singleton - navyse sa po par prechodoch JITom pravdepodobne k volajucemu nainlinuje telo servisnej metody (pokial je rozumne kratka).
Avsak ak sa chcete vyhnut alokaciam novych objektov na horucej ceste, tak na to sa hodi LMAX Disruptor - nie nejaky "funkcionalny" framework.

anonym

Re:Existuje jazyk, ktery...
« Odpověď #12 kdy: 18. 08. 2018, 22:17:36 »
mi umozni z:

get("/muj/uri/template/{id}, MojeService::metoda, request, response) ||
post("/muj/uri/template/{id}, MojeService::metoda, request, response);

zobecnic parametry metody request a response do nadrazene funkce takto:

Router.route(request, response)
.get("/muj/uri/template/{id}, MojeService::metoda)
.post("/muj/uri/template/{id}, MojeService::metoda);

A to tak, ze to bude kompletne bez instanciovani novych objektu?

V Jave samozrejme 2. moznost lze udelat snadno, jedna se v podstate o stejny princim jakym funguji streamy, nicmene prinejmensim .route bude instanciovat novy objekt.

Jeste pripominam, pokud to neni uz zrejme, ze nelze priblem vyresit pouzitim stavove tridy, protoze aplikace je vicevlaknova.

***
Duvodem proc nechci vytvaret nove objkety je zbytecne horsi performance.

(PS: Jirsak ne)
Kde presne si myslite, ze vo vasom priklade vznikaju nove objekty?
Method reference sa sprava ako lazy singleton - navyse sa po par prechodoch JITom pravdepodobne k volajucemu nainlinuje telo servisnej metody (pokial je rozumne kratka).
Avsak ak sa chcete vyhnut alokaciam novych objektov na horucej ceste, tak na to sa hodi LMAX Disruptor - nie nejaky "funkcionalny" framework.

Staci se podivat do Javy na Stream API, kazda tečka rovná se vrací se nová instance specifické třídy. Musí to tak bohužel tímto stylem být, to prostě nejde jinak. Přitom se domnívám, že se jedná o cosi, co by šlo jednoduše syntax cukrovat, možností jak by se to dalo udělat je několik.

V Javě to prostě nejde normálně udělat bez oprátoru new. Ještě se dá použít Object pool, ale to je narovnávák na ohýbák.

Vy teda říkáte, že ten JIT dokáže i vyrušít vytváření nových instancí?

***

Jinak tím, že to výkonostně stačí to začíná (plýtvání), a tím že mám dneska prakticky stejně RAMky jako před 15 lety končí. Viz. třeba Slack který vyžere 1GB ram.

gll

  • ****
  • 429
    • Zobrazit profil
    • E-mail
Re:Existuje jazyk, ktery...
« Odpověď #13 kdy: 18. 08. 2018, 22:34:38 »
Musí to tak bohužel tímto stylem být, to prostě nejde jinak.

nemusí. Můžeš pokaždé vracet stejný objekt a jen měnit jeho stav. Většinou se to tak dělá. Říká se tomu builder pattern.

https://jlordiales.me/2012/12/13/the-builder-pattern-in-practice/

můžeš dokonce vracet singleton a přidávat routy do nějaké kolekce v něm.

kimec

Re:Existuje jazyk, ktery...
« Odpověď #14 kdy: 18. 08. 2018, 22:58:57 »
Staci se podivat do Javy na Stream API, kazda tečka rovná se vrací se nová instance specifické třídy. Musí to tak bohužel tímto stylem být, to prostě nejde jinak. Přitom se domnívám, že se jedná o cosi, co by šlo jednoduše syntax cukrovat, možností jak by se to dalo udělat je několik.

V Javě to prostě nejde normálně udělat bez oprátoru new. Ještě se dá použít Object pool, ale to je narovnávák na ohýbák.

Vy teda říkáte, že ten JIT dokáže i vyrušít vytváření nových instancí?

***

Jinak tím, že to výkonostně stačí to začíná (plýtvání), a tím že mám dneska prakticky stejně RAMky jako před 15 lety končí. Viz. třeba Slack který vyžere 1GB ram.
Ved lambdy a method reference je syntakticky cukor, ktory sa spolieha na invokedynamic...
Hej, JIT kompiler moze optimalizovat kod tak, ze niektore objekty sa alokuju na stacku - vola sa to escape analysis, ale jav je to velmi zriedkavy.
Objekty v object poole sa nevytvaraju cez new?
Co vam presne vadi na new, ze sa alokuje nieco na heap?  Alebo, boze chran, by ste chceli nezdielany heap per CPU core, aby nebolo treba globalny garbage collector ako to ma erlang? Vadi vam garbage collector? Chceli by ste data iba na stacku a vyhnut sa dereferencovaniu instancii na heape? Toto vas trapi?