Vă mulțumim pentru susținere

Speed ​​Comparisons - Procedural versus OO în limbi interpretate

În limbile de programare interpretate, cum ar fi PHP și JavaScript, care sunt repercusiunile de a merge cu o abordare orientată pe obiecte asupra unei abordări procedurale?

În mod specific, ceea ce caut este o listă de verificare a lucrurilor pe care trebuie să le iei în considerare atunci când creezi o aplicație web și alegi între abordări orientate pe procedură și obiect, pentru a optimiza nu numai viteza, ci și mentenanța. Citat de cercetare și cazuri de testare ar fi de ajutor, de asemenea, dacă știți de orice articole care explorează acest lucru în continuare.

Linia de fund: cât de mare (dacă există) este performanța lovită cu adevărat, atunci când mergeți cu OO vs. Procedural într-o limbă interpretată?

0
adăugat editat

7 răspunsuri

Poate că eu sunt nebun, dar îngrijorătoare de viteză în astfel de cazuri folosind un limbaj interpretativ este ca și cum ai încerca să-ți dai seama ce culoare să pictezi vărsarea. Să nu ajungem chiar la ideea că acest tip de optimizare este în întregime prematură.

Ai lovit cuiul pe cap când ai spus "mentenabilitate". Aș alege o abordare care este cea mai productivă și mai rezistentă. Dacă aveți nevoie de viteză mai târziu, nu va ieși din comutarea între paradigme de codare orientate spre procedură versus obiect în interiorul unei limbi interpretate.

0
adăugat
Am avut șeful din iad. El nu știa nimic despre programare, dar a crezut că știe totul (mi-a ținut o dată pe mine pe timestamp-urile Unix, spunându-mi că "timestamp-urile Unix sunt ca timbrele europene, fac ciudat, au pus prima zi și apoi luna ca asta. / mm / aaa "ROFL, ce idiot). Așa că, când a aflat că făceam OO PHP, a fugit și a spus că va "încetini site-ul nostru". Căutam orice fel de studiu pe care l-am putut găsi pentru a dovedi că era plin de el, astfel încât să pot continua programarea OO ...
adăugat autor cmcculloh
sună ca un clientsfromhell.net
adăugat autor Xeoncross
POR este mai puțin productiv și mai puțin sustenabil.
adăugat autor Pablo Ariel

Linia de fund: nu, deoarece cheltuielile de interpretare copleșesc cheltuielile de expediere.

0
adăugat

Dacă utilizați un limbaj interpretat, diferența este irelevantă. Nu ar trebui să utilizați o limbă interpretată dacă performanța este o problemă. Ambele vor efectua aproximativ același lucru.

0
adăugat

Am făcut de fapt un mic test ca acesta în Python pe un site web pe care îl susțin și am constatat că ele sunt aproape echivalente în viteză, abordarea procedurală câștigată de ceva de genul zece mii de secunde, dar că codul OO a fost atât de semnificativ mai curat nu am continuat exercițiul mai mult decât o singură iterație.

Deci, într-adevăr, nu contează (în experiența mea oricum).

0
adăugat

Performanța dvs. va fi caracterizată de implementare, nu de limbă. Ați putea folosi cea mai lentă limbă și s-ar putea număra ca fiind cel mai mare site din lume atâta timp cât îl proiectați la scară.

Trebuie doar să vă amintiți prima regulă de optimizare.

Nu te.

:)

0
adăugat

Din păcate, mi-am făcut și testele. Am facut teste de viteza si este cam la fel, dar cand testez pentru folosirea memoriei obtinind memory_get_usage () in PHP, am vazut un numar coplesitor de mare pe partea OOP.

116.576 octeți pentru OOP la 18.856 octeți pentru procedura. Știu că "Hardware-ul este ieftin", dar haideți! 1.000% creștere a utilizării? Ne pare rău, nu este optim. Și având atât de mulți utilizatori care lovesc site-ul dvs. dintr-o dată, sunt sigur că RAM ar arde doar, sau se va termina. Am greșit?

0
adăugat

Din experiența mea, un site cu încărcătură mare va fi împotmolit și va deveni mai ușor de răspuns cu codul OOP decât procedural. Motivul este ușor de înțeles.

OOP necesită mult mai multe alocări de memorie (MALLOC) și mult mai multe operații pentru a rula în memorie decât codul procedural. Este nevoie de mult mai mult timp CPU pentru a-și îndeplini sarcinile. Acesta este, în esență, "overhead", înfășurat în jurul codului procedural, adăugând sarcina CPU pentru executarea acesteia, în special atunci când efectuează operațiuni de bază de date.

Mulți programatori preferă folosirea OOP, creând niște cutii negre ascunse în spatele unor interfețe simple. Cu toate acestea, am fost plătit bine pentru a revigora site-urile care au fost luate pentru totdeauna pentru a răspunde sub sarcină grele de utilizator. Eliminarea OOP și înlocuirea acestuia cu funcții procedurale simple au făcut o diferență enormă.

Dacă nu vă așteptați ca site-ul dvs. să fie foarte ocupat, cu toate mijloacele utilizați OOP. Dacă construiți un sistem cu trafic ridicat, veți dori să eliminați fiecare ciclu de CPU din procesare și fiecare octet de la ieșirea pe care o puteți obține.

0
adăugat