Co se skriptovacich jazyku tyce, tak PHP je v soucasnosti mimochodem jeden z nebo primo nejrychlejsi ze vsech (neuvazuju C jako skriptovaci jazyk). Udelat desktopovou aplikaci v PHP taky neni problem.
Urcite je, ze PHP s C porovnavat lze, nicmene porovnatelna oblast je mensi, nez celkovy zaber kazdeho z obou jazyku.
třeba v tomhle benchmarku je:
http://benchmarksgame.alioth.debian.org/u64q/regexredux.html
PHP verze používá multiprocesing a javascriptová verze ne. Javascriptová verze by šla zrychlit za cenu delšího kódu.
Tak porovnávat na základě rychlosti regulárních výrazů je poněkud zavádějící. Je to jeden střípek mozaiky, ale je to spíš o použité knihovně a schopnosti jazyka volat jednoduše C knihovny.
Když už BenchmarkGame, tak pak celkové porovnání, to už je pak o něčem jiném.
http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=node&lang2=php
A jaký to má význam v praxi? Argumentaci, že php nebo node.js jsou rychlé nejčastěji slýchám od programátorů, kteří jsou pak schopni v těch jazycích udělat aplikaci, která místo databázového join prochází tabulku ve for cyklu a dělá další dotazy, která i pro triviální věci potřebuje stovky MB node_modules nebo která je tak úžasně moderní a asynchronní, že autor ani nedokáže zjistit, kde mu to občas padá na volání funkce s nesedícím počtem argumentů (toto vše je z praxe).
Jsou jistě případy, kdy má rychlost jazyka smysl řešit, ale zatímco rozdíly mezi třeba Pythonem a php budou maximálně v desítkách procent, rozdíly v architektuře řešení bývají v mnoha řádech. Teď jsem zrovna dělal na aplikaci, která v php renderovala běžnou stránku kolem 5-8s, popřepisu do pythonu jsou skoro všechny stránky do sekundy (hint: rozdíl není v použitém jazyce).
No tak tímhle způsobem vést debatu asi moc smysl nemá, ale stejně se zeptám: jakou rychlost u webové aplikace považujete za požadovanou Vy (zejména když není určeno co ta aplikace dělá a nad jakým množstvím dat)? Já požívám jednu sekundu jako hrubý údaj, kdy má smysl začít se zabývat optimalizací (aktuálně nám to vychází pro 95% percentil requestů, pokud bych vzal 75% tak je to kolem 300ms; k tomu je třeba připočíst latenci na cestě k datacentru, v mém případě teď zrovna kolem 200ms). Pokud je to do sekundy preferuji jiné aspekty, třeba čitelnost a přímočarost kódu (samozřejmě jsou vyjímky, tohle je jen orientační pravidlo).
Ale pointa byla úplně jinde: ze všech těchto časů tvoří Python cca 30ms (podle NewRelicu). I kdybych to přepsal třeba do C, tak volba programovacího jazyka má prakticky nulový vliv. Mnohem větší efekt dosáhnu návrhem aplikace (třeba počet dotazů, jejich vliv na UI) nebo zřízením nového datacentra blíž uživatelům.
Proto mi názory jak je php rychlé přijdou směšné. Ano, asi je, ale koho to zajímá? Facebook nebo Slack určitě, ale bežného vývojáře težko.
Jestliže se i v "dřevních" dobách před 10-12 lety dal napsat v PHP facebook jsou ódy nad úžasně superiorní konstrukcí aplikace v pythonu lehce mimo.
Ano v PHP bohužel lidé provádí neuvěřitelná zvěrstva, ale to není chyba jazyka, spíše mu slouží ke cti, že v něm dokáže cosi funkčního stvořit i "analfabet".
Problém lidí v tuzemském IT je v tom, že 99% z nich nedělala (a ani se nikdy nechystá) na nějakém větším projektu (desítky, stovky milionů views/day). Pak je pro ně vrcholem optimalizace sql dotaz s 10 joiny co zabere vteřinu a vysmívají se alternativě s cyklem co zabere desetinu času, protože who cares u nějaké lupy s pár 10.000 views....
To si v tom for cyklu ty jinak najoinovaný data náhodně vygeneruješ? :D Nebo jakou to má souvislost?
A jinak bacha, for cyklus je starý imperativní programování a to je jen pro fosily! Kdo chce dnes být free cool a in, používá zásadně funkcionální programování, takže žádné for, ale reduce!
Ne, mluvil jsem o zhruba takové konstrukci:
$masters = SELECT * FROM master;
foreach ($masters as $m) {
SELECT * FROM detail WHERE id_master=$m.id;
}
Bylo to v jednom endpointu co se používal hodně málo (jednou za x týdnů) a protože ten systém neměl ani žádný monitoring výkonu příšlo se na to tak, že doba provádění toho dotazu postupně narostla na desítky sekund až překročila limit na load balanceru.
Problém (nejen v tuzemském IT) jsou lidé, kteří nechápou psaný text a reagují na něco, co nebylo napsáno.
Moje pointa byla v tom, že rychlostí php nejvíc argumentují lidi, kteří neví, o čem mluví. Kdo se trochu orientuje tak ví, že velký web se dá udělat v php, perlu, Python, Javě, C# (a dalších jazycích) a rychlost jazyka (zvlášť u skriptovacích jazyků) je dost málo podstatný faktor.
>Jestliže se i v "dřevních" dobách před 10-12 lety dal napsat v PHP facebook jsou ódy nad úžasně superiorní konstrukcí aplikace v pythonu lehce mimo.
Rychlost jazyka má malý vliv, návrh má velký vliv. Ukaž mi jak chceš rychlej jazyk a já v něm naprasím takový věci, že se ještě po roce budeš hrůzou budit ze sna :)
V kódu se taky musí vyvážit čitelnost, rychlost psaní a další s optimalizací. A jestli mám něco sfláknout za odpoledne, dám tam jednodušší konstrukci, i když pomalejší a přestřelenou. Jsou časy, kdy se vyplatí optimalizovat všechno (protože se to zdá objektivně "pomalý", "dostatečná" rychlost se liší kus od kusu v závislosti na spoustě věcí).