Devel.cz Lupa Měšec Podnikatel Root Zdroják.cz DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názory k článku
PHP v rytmu Hip Hopu

belzebub
belzebub (neregistrovaný) ---.net.upcbroadband.cz
27. 1. 2011 0:23 Nový

bastl

celé vlákno

Nemuzu si pomoci, ale mam pocit ze vsechno co pochazi od facebooku je bastl, zprasenina a obecne neco co de proti vsemu co povazuji za "spravne" v programovani..

Michal Kočárek
Michal Kočárek (neregistrovaný) ---.i4g.tmcz.cz
27. 1. 2011 0:39 Nový

Re: bastl

celé vlákno

Budete-li trochu studovat, zjistíte, že kvalita kódu a rychlost provádění jsou v nepřímé úměře. (Tedy: čím „hezčí kód“, tím pomaleší provádění).

Jelikož HipHop vytvářel (ten hnusný, zlý, ošklivý a velký Big brother, pan) Facebook, je naprosto zřejmé, jaký má ten projekt účel – rychlost. A jelikož narazili na limity PHP, které nelze dál posunout, tak měli dvě možnosti – buď to všechno přepsat, nebo si napsat quick’n’dirty řešení – HipHop je druhou variantou, ale jak se zdá, funguje.

belzebub
belzebub (neregistrovaný) ---.net.upcbroadband.cz
27. 1. 2011 0:50 Nový

Re: bastl

celé vlákno

Asi jsem se vyjadril moc neurcite - to co mi vadi je, ze misto rozumnych optimalizaci se provadi hromadny prevod do C++, ktery funguje pouze na specifickem OS a HW, ktery do sebe navic nabali vlastni web server - to je podle me ukazkova definice prasarny.
Jinymi slovy: "quick'n'dirty" = prasarna.

Takze si vlastne rozumime.

Jinak za rozumnou optimalizaci, ktera neni PRASARNOU, povazuji v prvni rade nejaky profiling, nalezeni bottlenecku, pak bud pouziti lepsiho algoritmu, coz byva casto vice nez dostatecne - a pokud to nestaci, prepsani POUZE bottleneckove casti do neceho rychlejsiho.
A nebo koupeni vice pameti nebo dalsich pocitacu - coz vyzaduje znalost konkretni situace - nekdy to muze byt levnejsi, nekdy ne.

Michal
Michal (neregistrovaný) ---.jaw.cz
27. 1. 2011 1:05 Nový

Re: bastl

celé vlákno

A vidíte to. Vy tu diskutujete v diskuzi a Facebooku to, zdá se, funguje tak jak potřebuje. Je mnohdy lepší udělat prasárnu, než si vymýšlet, jak by to asi bylo teoreticky možná někdy lepší.

JS
JS (neregistrovaný) ---.net.upcbroadband.cz
27. 1. 2011 5:24 Nový

Re: bastl

celé vlákno

Proc by mel byt preklad do C++ prasarna? Pokud to chapu spravne, tak ten HipHop urcuje datove typy. Coz je ta hlavni optimalizace, jelikoz pokud vim, PHP je dynamicky typovany jazyk, takze musi typ zjistovat pri kazde operaci s promennou.

Nevim, jak byste vykonovou ztratu v tomhle chtel zjistit profilerem na urovni PHP. Samozrejme, muzete take profilovat samotne PHP; pak byste ale nejspis zjistil to, co vam rikam (staci se podivat, jak funguje hlavni interpretacni smycka), a predpokladam, ze to je to, co vyvojari HipHopu udelali.

Tomáš Kafka aura:63
27. 1. 2011 10:15 Nový

Re: bastl

celé vlákno

Jen připomenu, že hiphop nepsali vývojáři Facebooku pro vás, ale pro sebe - na vás je pak posoudit, zda řešíte podobná omezení s podobnými parametry a výsledky cost/benefit analýzy. Pokud ne, nikdo vás nenutí to používat.

Michal
Michal (neregistrovaný) 62.77.79.---
27. 1. 2011 10:37 Nový

Re: bastl

celé vlákno

Naprosto presne! :-)

Michal Kočárek
Michal Kočárek (neregistrovaný) ---.i4g.tmcz.cz
27. 1. 2011 14:20 Nový

Re: bastl

celé vlákno

Ne, evidentně si nerozumíme.

Mohu pouze shrnout to, co psali i ostatní. Facebook to psal pro sebe, protože jemu to snížilo provozní náklady o 50%, jak tu psal autor článku.

Ukažte mi jiný způsob, jakým snížíte náklady o polovinu. Obávám se, že nákupem pamětí a procesorů a počítačů ty náklady nesnížíte. Optimalizace bottlenecků ty náklady taky neposune.

Ano, píšete-li kód v C nebo C++, není problém se ponořit v jedné proceduře do assembleru a část kódu přepsat. Ale v PHP to prostě nejde. Asi nerozumíte, že PHP má prostě nějaké limity, které už prostě dále posunout nejde bez změny technologií – a to přesně Facebook udělal.

A osobně si myslím, že je úplně jedno, je-li to řešení prasárna nebo ne. Důležité je, že to obsluhuje miliony požadavků za vteřinu, snížily se náklady, a ještě to funguje. Howgh.

Kit
Kit (neregistrovaný) ---.215.broadband12.iol.cz
29. 1. 2011 20:18 Nový

Re: bastl

celé vlákno

Byla ještě jedna cesta s bottleneckem: Vytvořit si vlastní moduly PHP řešící právě tato místa třeba v C++ a ty potom v PHP používat. Když tuto techniku mohou používat vývojáři v Lua, tak proč ne v PHP?

Jakub Onderka aura:100
29. 1. 2011 20:53 Nový

Re: bastl

celé vlákno

Četl jste článek? Tuto techniku před HipHopem používali.

Kit
Kit (neregistrovaný) ---.215.broadband12.iol.cz
29. 1. 2011 21:16 Nový

Re: bastl

celé vlákno

Článek jsem četl. Jsou 2 možnosti:
- snažili se optimalizovat části, které nemá smysl optimalizovat ve stylu pravidla 90:10
- chtěli vykopnout z operační paměti interpretr PHP

Podle mne je pravděpodobnější to druhé. Při zpracování textů rozdíl mezi kompilovanými a interpretovanými jazyky IMHO není zas tak podstatný, paměťová náročnost však mohla hrát svou roli.

Michal Illich aura:20
27. 1. 2011 9:37 Nový

Re: bastl

celé vlákno

Pokud vám bastl ušetří pár milionů dolarů, použijete ho?

Miloslav Ponkrác aura:75
27. 1. 2011 0:38 Nový

Wikipedie

celé vlákno

Ona je otázka, zda nasazením HipHopu by se wikipedie naopak nezpomalila. Mám pocit, ale nehodlám to zkoumat, že wikipedia dost přepsala a značně zoptimalizovala zdrojové kódy řady funkcí v PHP ve své vlastní verzi.

Na rozdíl od HipHopu je zdokonalila použítím výrazně lepších algoritmů, než jsou v originálním PHP.

JAM3SoN
JAM3SoN (neregistrovaný) 62.197.198.---
27. 1. 2011 0:42 Nový

Re: Wikipedie

celé vlákno

Aj napriek zlepšeniu algoritmov by ale stále bola réžia prekladu väčšia ako s použitím HipHop, či sa mýlim? HH by spracovával optimálnejší kód, čiže logicky by mal byť úmerne rýchlejší bez HH ale znova aj s HH.

Hrach
Hrach (neregistrovaný) ---.68.broadband6.iol.cz
27. 1. 2011 0:50 Nový

Wiki

celé vlákno

Wikipedie by IMHO ničeho nedosáhla, protože poměr generovaného obsahu ku tomu cachovanému v místích oblastech je zanedbatelný.

Tomáš
Tomáš (neregistrovaný) 62.168.4.---
27. 1. 2011 8:33 Nový

Re: Wiki

celé vlákno

Ta optimalizace by se měla týkat kódu, ne vlastních dat. Takže jednou se to přeloží do něčeho rychlejšího a potom už to funguje se všemi daty.

mormegil aura:100
27. 1. 2011 12:01 Nový

Re: Wiki

celé vlákno

Nejde o optimalizaci dat, jde o to, že základem toho, že Wikipedie vůbec funguje, je masivní cachování. Tedy hodně velká část požadavků vůbec nedojde do PHP. (Ale když už tam dojde, tak by si to optimalizaci zasloužilo, byť si nejsem moc jist, jak moc je ten kód „PHP-bound“, i když prvotní testy HipHopu na MediaWiki vypadaly dost zajímavě.)

Václav Novotný
27. 1. 2011 8:50 Nový

Díky

celé vlákno

Díky za hezké představení HipHopu. Neuvažujete, že napíšete i o dalších technologiích Facebooku?

David Majda aura:98
27. 1. 2011 9:31 Nový

Re: PHP v rytmu Hip Hopu

celé vlákno

Nejprve se projde zdrojový kód, které se převede do jednotlivých jazykových elementů, tzv. tokenů. Z nich kompilátor vygeneruje bajtkód, tedy kód obsahující instrukce virtuálního stroje.

Popis je nepřesný. Z tokenů se musí ještě postavit abstraktní sytaktický strom (AST), aby byla jasná struktura programu. Teprve z něj se vůbec může generovat bajtkód.

Vít Šesták (v6ak) aura:72
27. 1. 2011 9:40 Nový

Nette na HipHopu

celé vlákno

Popsaný problém s Nette není vhodné řešit evalem, mnohem lepší by IMHO byla AOT kompilace šablon. Možná by si to vyžádalo i nějakou úpravu šablonovacího systému. Ten eval by se hodil spíše do první 'funguje to' verze.

Neříkám, že po tomto půjde již Nette bez problémů rozjet na Hiphopu, ale mělo by to řešit jeden z problémů.

JakubS
JakubS (neregistrovaný) ---.kmenet.cz
27. 1. 2011 12:51 Nový

Re: Nette na HipHopu

celé vlákno

Pro první "funguje to" verzi by snad mohlo stačit HipHopu předhodit projekt s již přeloženými šablonami (tzn. v tempu by byly PHP ekvivalenty Latte šablon).

Zkoušel to někdo?

Vít Šesták (v6ak) aura:72
27. 1. 2011 14:21 Nový

Re: Nette na HipHopu

celé vlákno

To může narozdíl od evalu skončit (podobně jako některé další věci) na dynamickém načítání skriptů, ačkoli jsou již předkompilované.

Vít Šesták (v6ak) aura:72
27. 1. 2011 9:52 Nový

PHP vs. V8: jiná situace

celé vlákno

PHP je v poněkud jiné situaci než V8: Na V8 obvykle buď běží jednoduchý skript (okořenění stránky), nebo nějaká webová aplikace (GMail), která se může malou chvíli načítat, ale pak má běžet rychle.

V prvním případě je režie malá, ve druhém př'ípadě není IMHO vzhledem k době běhu mnohdy až tak podstatná a kritická jako režie u PHP.

V8 má prostě JIT kompilátor (=> o néco vyšší režie při startu). A psát JIT pro PHP by se nevyplatilo, protože:
* u krátko běžících aplikací nemá dostatečný efekt a lepší je AOT (což vlastně udělali)
* AOT je jednodušší na implementaci než JIT.
* Změna životního cyklu PHP, která by umožnila nasadit efektivní JIT, by si mohla vyžádat přepsání aplikace a zasáhla by kvůli podpoře vláken dost i do vlastní implementace PHP.

Tedy, myslím, že udělali to nejjednodušší, co mohli, i když to tak možná na první pohled nevypadá.

TkTz
TkTz (neregistrovaný) 188.175.33.---
27. 1. 2011 9:55 Nový

Re: PHP v rytmu Hip Hopu

celé vlákno

Vyborny clanek ! Jiz delsi dobu se rozhoduju hip hop vyzkouset z vlastni zvedavosti . Myslim si , ze je to projekt mirne vydareny a pro "svizny" chod facebooku (pri tak velke zakladne uzivatelu) nezbytny. Tesim se na dalsi clanky open-sourceu z dilen facebooku :)

boban
boban (neregistrovaný) 85.119.93.---
27. 1. 2011 10:00 Nový

pěkný článek o technologiích Facebooku

celé vlákno
jxp
jxp (neregistrovaný) ---.net.upcbroadband.cz
27. 1. 2011 11:07 Nový

Upozornění na překlep

celé vlákno

Ve druhém odstavci

což by ovšem prý přeneslo zrychlení

má se největší pravděpodobností být
což by ovšem prý přineslo zrychlení

Jinak pěkný článek, ale mám pocit, že kdyby najali tým programátorů, kteří by fb přepsali do RoR tak by to přineslo víc. On fb není složitá aplikace její síla je v tom, že jsou tam všichni :)

Václav Novotný
27. 1. 2011 11:17 Nový

Re: Upozornění na překlep

celé vlákno

Já tedy kód Facebooku neznám, ale rozhodně bych si nedovolil tvrdit, že Facebook není složitá aplikce :) Když člověk vezme v potaz množství dat, které jím proteče a to, že musí synchronizovat datacentra po celém světě, tak jsme rázem někde jinde.

Ano, kdybych napsal vlastní "Facebook" a rozjel ho pro své kamarády, tak to pravděpodobně nebude moc složitá aplikace.

sidik
sidik (neregistrovaný) ---.mepatek.cz
27. 1. 2011 14:35 Nový

Re: Upozornění na překlep

celé vlákno

Jj, přepsání do RoR by přineslo víc. Třeba celkem solidní zpomalení a spoustu nepěkných chvilek při snaze to vůbec rozchodit :)

* Vlastní zkušenosti - doteď jsem vyzkoušel cca 12 různých RoR webových aplikací a jsou děsně pomalé. Navíc rozhejbat je bylo peklo. Ale na Redmine nedám dopustit :)

Petr Mejzlík aura:77
27. 1. 2011 18:22 Nový

Re: Upozornění na překlep

celé vlákno

RoR - Ruby? To je další interpretovaný jazyk, podobně jako PHP. Pomohlo by přepsání do C++ nebo jiného kvalitního kompilovaného jazyka blízko hardwaru. I Java je mnohem rychlejší než PHP nebo Ruby.

sidik
sidik (neregistrovaný) ---.client.ltnet.cz
28. 1. 2011 9:25 Nový

Re: Upozornění na překlep

celé vlákno

Ano, Java... Ale možná tak co se vývoje týče. Pravda, nevím jak je a tom Java u webových aplikací ale cokoliv desktopového je otřesně pomalé. Protože ale Javu neznám, tak nejsem schopen říct, jestli je to Javou nebo jen neschopností programátorů, co jí používají.

pytel
pytel (neregistrovaný) ---.79.broadband2.iol.cz
28. 1. 2011 12:17 Nový

Re: Upozornění na překlep

celé vlákno

Kdyz to neznate, tak proc mate potrebu se k tomu vyjadrovat?

registrovaný uživatel
registrovaný uživatel (neregistrovaný) ---.cust.sloane.cz
28. 1. 2011 23:07 Nový

Re: Upozornění na překlep

celé vlákno

To už je takový národní zvyk :-(*)

Kit
Kit (neregistrovaný) ---.215.broadband12.iol.cz
29. 1. 2011 20:34 Nový

Re: Upozornění na překlep

celé vlákno

Díky za názor o RoR. Chtěl jsem ho vyzkoušet na vytvoření webové aplikace, ale nemám s ním žádné zkušenosti. Jen jsem si udělal pár konstrukcí v Ruby a došel jsem k závěru, že mi tento jazyk nevyhovuje. Pomalé aplikace rád nemám a tak zřejmě RoR ani nebudu zkoušet.

Jan Seidl
31. 1. 2011 0:21 Nový

Re: Upozornění na překlep

celé vlákno

No zase abych napsal neco malo na obranu k RoR, tak v dobach kdy jsem weby delal (PHP) a take upravoval jiz vyse zmineny redmine (RoR), tak jsem si rikal ze rozhodne je to zajimavy jazyk a mozna by stalo za to pri vyvoji nejakych komplexnejsich systemu po nem sahnout. Co se rychlosti interpretace tyce nevim, redmine si rozhodne nejakou ramku vzit umel (tak mongrel je samotny psany v ruby pokud se nepletu a kod aplikace se tez naklada do ramky?? ale prosim opravte me pokud placam nesmysly) a celkove asi neni uplne nejlehci, ale zase kdyz clovek umi, myslim ze vyvoj muze byt nekde jinde (rychlost, zapouzdrenost,...) zejmena diky tem hook trikum atd...
Nicmene zmenil jsem praci, pouzivam perl (kdyz potrebuju jo vykon tak C) a je po ptakach;)

Jano
Jano (neregistrovaný) ---.87-197-131.telecom.sk
27. 1. 2011 11:50 Nový

Podstata veci

celé vlákno

Cely problem rychlosti PHP je velka "vzdialenost" od CPU. Optimalizacia PHP ma svoje hranice uz len tym ze bezi pod virtualnou masinou. Hip hop nerobi nic ine len "priblizuje" kod blizsie k CPU. Cim sa ziska potrebny vykon.
Este jedna dolezita vec, ktora tu nebola spomenuta Apache + PHP nieje velmi optimalna kombinacia s pohladu uspory pamate. To sa da nahradit ciastocne kombinaciou nginx + php_cgi. Ked sa vsak pozriete na pamatove naroky hip hop kompilovanej aplikacie, zistite ze pamatove naroky tejto kombinacie su velmi nizke. Na jednom zeleze tak mozete prevadzkovat viac aplikacii, obsluzit viac uzivatelov. Ide teda aj o financnu usporu.

Viem si predstavit este lepsie riesenie ako hiphop a to je kompilacia priamo do ASM daneho CPU :-) Takto je nutna konverzia php -> g++, g++ -> asm.

cleb
cleb (neregistrovaný) ---.pod.cvut.cz
27. 1. 2011 12:50 Nový

Špatně zvolený název

celé vlákno

Brrr, měli by to přejmenovat, jinak se toho netknu :)

jos
jos (neregistrovaný) ---.tabor.telecom.cz
27. 1. 2011 18:30 Nový

Re: Špatně zvolený název

celé vlákno

jedině METAL!

cleb
cleb (neregistrovaný) ---.pod.cvut.cz
27. 1. 2011 19:36 Nový

Re: Špatně zvolený název

celé vlákno

Ideálně, ale nemusí být. V podstatě by mi stačilo cokoli co není hip hop. Ať si to pojmenují třeba Justin Bieber, všechno bude lepší než hip hop.

Tschello
Tschello (neregistrovaný) ---.174.broadband4.iol.cz
27. 1. 2011 20:46 Nový

Re: Špatně zvolený název

celé vlákno

Takové problémy můžou mít snad jen na ČVUT :)

Petr Mejzlík aura:77
27. 1. 2011 22:30 Nový

Re: Špatně zvolený název

celé vlákno

| +1

Petr Mejzlík aura:77
27. 1. 2011 22:29 Nový

Re: Špatně zvolený název

celé vlákno

| -1

jos
jos (neregistrovaný) ---.net.upcbroadband.cz
27. 1. 2011 23:12 Nový

Re: Špatně zvolený název

celé vlákno

takze Busta Rhymes by bylo OK?

cleb
cleb (neregistrovaný) ---.pod.cvut.cz
27. 1. 2011 23:36 Nový

Re: Špatně zvolený název

celé vlákno

Samozřejmě.

jos
jos (neregistrovaný) ---.net.upcbroadband.cz
28. 1. 2011 1:16 Nový

Re: Špatně zvolený název

celé vlákno

tak asi tu ted budu za hlupaka, ze mezi rapem a hip-hopem nedelam rozdil (a nebo jeste za vetsiho hlupaka, protoze nevim jestli je Busta raper nebo hip-hoper)

no metal by stejne byl lepsi, to jo

Vaclav Balak aura:62
27. 1. 2011 13:51 Nový

wtf?

celé vlákno

"JavaScript v prohlížeči Google Chrome je několikrát rychlejší než PHP" nejak se u tohoto tvrzeni nechytam, jak si je mam vysvetlit?

Martin
Martin (neregistrovaný) ---.ima.cz
27. 1. 2011 15:32 Nový

Re: wtf?

celé vlákno

Napište si složité funkce v JavaScript a PHP. Následně je spusťte na stejném počítači pomocí Chrome a php intrepretu a sledujte, za jak dlouho spočítají výsledek. Možná se míchají jabka s hruškama, ale danému tvrzení to bude odpovídat.

Asi jako věta
"JavaScript v prohlížeči Google Chrome je několikrát pomalejší než C"

Vaclav Balak aura:62
27. 1. 2011 15:39 Nový

Re: wtf?

celé vlákno

jo takhle, tak melo byt rovnou napsano interpretace, ted uz to chapu :-)

Petr Mejzlík aura:77
27. 1. 2011 22:33 Nový

Re: wtf?

celé vlákno

On totiž javascript v chrome není přímo interpretovaný, je kompilovaný do bajtkódu a až ten je (velmi rychle) interpretovaný.

Jakub Onderka aura:100
27. 1. 2011 23:31 Nový

Re: wtf?

celé vlákno

JavaScriptový engine Chromu V8 nepoužívá bajtkód, ale je kompilován přímo do nativního kódu.

kochi
kochi (neregistrovaný) ---.certicon.cz
28. 1. 2011 17:02 Nový

bCompiler

celé vlákno

Jak je na tom Hip Hop v porovnání s bCompiler - rozšíření PHP, které umožňuje uložit přímo onen Bytecode do souboru, načíst ho a následně rovnou interpretovat? Výhda? Funguje by byla, že by fungovalo jakékoli rozšíření.

Rozšíření funguje transparentně, že zvládá jak orig. zdrojové kódy, tak soubory uložené v bytecode.

http://www.php.net/manual/en/book.bcompiler.php

Jakub Onderka aura:100
28. 1. 2011 17:07 Nový

Re: bCompiler

celé vlákno

Prakticky by mělo být podobně rychlé jako při použití PHP s cache bajtkódu (například APC nebo eAccelerator) – tedy odpadne parsování a generování bajtkódu, ale samotné vykonávání programu se nezrychlí.

jos
jos (neregistrovaný) 193.179.128.---
31. 1. 2011 17:57 Nový

Re: bCompiler

celé vlákno

HipHop je v produkčním nasazení, bCompliler je experimentální

http://www.php.net/manual/en/intro.bcompiler.php

Zasílat nově přidané příspěvky e-mailem