Az eredmények elég meggyőzőek lettek. Az uncached homepage válaszideje 100ms-ről 30ms-re csökkent (azonos hardveren, a Drupal 4.7 DDEV containerben futott, a korrektség kedvéért). Akit érdekel a kód, itt megtalálja a repót: https://github.com/aronnovak/drupal-rust
https://imgur.com/inu3san (ez egy mérést mutat, konzisztens volt több futás után is amúgy).
CPU: i5-1235U
Meglepően könnyen ment a dolog, a portolás nagy részét az AI viszonylag fájdalommentesen elvégezte. Ahogy várható volt, az AI alapból simán kihagyta a security részeket (XSS, CSRF védelem, stb.). Konkrétan kérnem kellett, hogy implementálja a form protectionöket és a sanitizationt. A válaszidő viszont jelentősen csökkent.
További performance engineering kísérletek és case study-k itt: https://www.gizra.hu/blog/
Ti használnátok AI-t performance-kritikus kód refaktorálására éles környezetben?
- aaron blogja
- A hozzászóláshoz be kell jelentkezni
- 1071 megtekintés
Hozzászólások
Kb 15 éve próbáltam ki, hogy egy Java-s PHP interpreterrel futtatam Drupal-t, Tomcat-en. Pontos méréseket nem csináltam, de hangolás nélkül is kenterbe verte az Apache HTTPD + mod_php párost. A JVM memória-kezelése és JIT compilere sokkal jobb, mint a PHP-é... legalábbis ez volt 15 éve. PHP-n nagyon sokat dob, ha van code cache...
- A hozzászóláshoz be kell jelentkezni
Server: nginx-fpm, PHP 5.6 - ezt írja a DDEV. Nem Apache + modphp volt. A DDEV alapból tartalmaz minden olyan beállítást, ami a legnagyobb performance bakik elkerüléséhez szükséges. a A Java-s interpreter ügyes, bár nem tudom, hogy van-e mostanában jól karbantartott efféle megoldás. Bár gondolom azóta annyit javult a PHP teljesítménye, hogy nem annyira releváns egy ilyen projekt.
- A hozzászóláshoz be kell jelentkezni
a JVM teljesítménye is javult azóta :)
Megtaláltam, mit próbáltam ki anno, és a legfrissebb elérhető verzió 12 éves... viszont rövid keresgéléssel találtam fordítottat, azaz JVM bytecode interpretert implementált egy állat PHP-ben ;)
- A hozzászóláshoz be kell jelentkezni
Ez jol jonne a HUP-nak is :)
- A hozzászóláshoz be kell jelentkezni
Ha megkeresnek, állok elébe :)
- A hozzászóláshoz be kell jelentkezni
Igen, szuper lenne!
(az a 25 évnyi adat, főoldali nézetek stb. ami hiányzott a tesztből, azzal kellene tesztelni)
trey @ gépház
- A hozzászóláshoz be kell jelentkezni
Hiányzott? Kinek? A megrendelőnek? :)
Nekem pont ez volt a cél, hogy egy alap CMS-t felügyelettel lekódol-e olyan nyelvben, amit én választok. A válasz igen.
- A hozzászóláshoz be kell jelentkezni
Össze kéne olvasni a kommenteket ... arra válaszoltam, hogy a "Ez jol jonne a HUP-nak is" ...
Ha már az az összehasonlítás, akkor pls. almát a körtével.
trey @ gépház
- A hozzászóláshoz be kell jelentkezni
Ebben igazad van, asm-nek reagáltál, nem nekem. Nyilván a hup-on sokkal komplexebb skálázhatósági kérdések jönnek elő. Nem mindig a PHP a szűk keresztmetszet, Redis, MariaDB, stb. Egy-egy lassú query nyilván nagyobb problémákat tud jelenteni, mint a PHP ideje.
- A hozzászóláshoz be kell jelentkezni
Anno még az előző munkahelyemen sacc/kb. 12 éve egyszer felmerült bennünk, hogy mennyire lassú a PHP (5.5-5.6 környékéről beszélünk). Mérések alapján az jött ki, hogy az idő 90%-a DB-zés. Utána nem is nagyon foglalkoztunk vele, csak ha valami látványosan lassú volt és inkább a DB querykre fókuszáltunk. Többet ért.
- A hozzászóláshoz be kell jelentkezni
Nálunk majdnem minden projekthez van New Relic, ott ezek ragyogóan látszódnak. A legtöbb Drupal oldal DB / Redis limitált, már ha lehet jól cache-selni. Egy intranet simán lehet CPU limitált, ha egy nagyobb framework-öt használnak sok absztrakcióval.
- A hozzászóláshoz be kell jelentkezni
Nem egyszer lattam hogy DB koruli ORM -en ment el az ido, es DB -re fogtak.
Egy ORM read intesive workloadnal >5x idot toltott ORM -ben mint a DB ben.
>8x -rol indult, es az ORM is tartalmazott nemi native codot, de interpreter az interpreter ..
Az ORM-en tul volt meg egy par object layer, <sarcasm>hogy ne tunjon lassunak az ORM </sarcasm>, a db nem volt rossz.
Amit nem lehet megirni assemblyben, azt nem lehet megirni.
- A hozzászóláshoz be kell jelentkezni
Na, a kérdéses helyen nem volt semmiféle ORM :) Egyébként az ORM-mel önmagában még nem lenne gond. (Sőt... egyszer mértem össze az EF Core-t a klasszikus ADO.NET-es DataReaderrel, simán 20-30%-ot rávert arra, amit össze tudtam hozni, nem mondom, hogy reprezentatív mérés) A probléma inkább az, amikor az ORM miatt feleslegesen sok adatot kell mozgatni oda-vissza vagy feleslegesen újraimplementálni, komplexen (és/vagy rosszul) olyan dolgokat, amiket a DB-k egyébként tudnak.
- A hozzászóláshoz be kell jelentkezni
Ez mondjuk egy egyedileg fejlesztett webshop volt :)
- A hozzászóláshoz be kell jelentkezni
Teljesen lényegtelen. 7 like van ugyanerre a Linkedinen angolul... Azért kellett a kis kódbázis, hogy az AI ügynök kezelhető méretű problémát kapjon. A Drupal 11 forráskód más liga. Ez hobbi-portolás, hobbi token-kereten belül.
Ha adok neki egy rendes büdzsét, ugyanezt megteszi a Drupal 12 kódjával. Ja igen, a Drupal core fejlesztők 12-nél tartanak.
- A hozzászóláshoz be kell jelentkezni
Teljesen lényegtelen.
Hogy lenne lényegtelen? Vicces, hogy 3 mondattal arrébb pont te cáfolod :D
A Drupal 11 forráskód más liga
🤷♂️
Ja igen, a Drupal core fejlesztők 12-nél tartanak.
Huh!
trey @ gépház
- A hozzászóláshoz be kell jelentkezni
Nem cáfolat az. Pontosan lehet tudni, hogy mekkora kódbázisokra engednek rá agenteket újabban.
https://www.anthropic.com/engineering/building-c-compiler
PoC, deszkamodell, stb.
- A hozzászóláshoz be kell jelentkezni
"Ti használnátok AI-t performance-kritikus kód refaktorálására éles környezetben?"
Hogyne. Bár ugye erősen limitál, hogy akármit nem adhatok neki, mert mittomén hogy mennyire IP meg egyáltalán.
Viszont a saját motyóimat újabban átnézetem vele, pl. egységesítés, coding style fixek miatt. Meg hogy mit tud rajta optimalizálni. Na, ez pl. odáig fajult, hogy kioptimalizálta a scriptből a szerviz indítását. Mindenképp tanulságos eljátszani vele.
- A hozzászóláshoz be kell jelentkezni
Melyik eszközt és milyen felállásban?
- A hozzászóláshoz be kell jelentkezni
Ezen semmi tapsikolni való nincs, nem az AI meg a Rust érdeme. Ez csak példázza a futási sebességkülönbséget egy interpretált és egy gépi kódra fordított nyelv között. Egyrészt ha 8-as vagy újabb PHP-vel próbálod (bár ezen a 4.7-es DrewPali lehet nem futott volna) és bekapcsolod a JIT-et, akkor az a 100ms lement volna jóval 50 alá, másrészt ha a Zalyí C-re portolt volna, akkor talán 10ms környékére is. Csodák nincsenek.
“Linux isn't an OS, it's a troubleshooting sim game.” (a YouTube commenter)
- A hozzászóláshoz be kell jelentkezni
Folyamatban van egy új teszt, a JSON:API részleges re-implementációja Rustban. Kurrens PHP, kurrens Drupal, stb.
példázza a futási sebességkülönbséget egy interpretált és egy gépi kódra fordított nyelv között
Igen, pontosan ez történt. De annyival gyorsabb lett újraimplementálni a rendszer egy részét, hogy valós alternatíva szerintem. Régebben senkinek nem jutott eszébe egy webfejlesztő csapatban, hogy fordított nyelvvel csináljon valamit (ritka kivételtől eltekintve, nálunk is volt házon belül Haskelles projekt), mert nem volt meg hozzá a kompetencia és/vagy az anyagi háttér.
- A hozzászóláshoz be kell jelentkezni
A folytatás: https://hup.hu/node/189453
- A hozzászóláshoz be kell jelentkezni