
Σε ερμηνεύεται γλώσσες προγραμματισμού, όπως η PHP και JavaScript, ποιες είναι οι επιπτώσεις της θα με Αντικειμενοστρεφής προσέγγιση για μια διαδικαστική προσέγγιση;


Συγκεκριμένα αυτό που ψάχνω είναι μια λίστα με πράγματα που εξετάζουν κατά τη δημιουργία ενός web εφαρμογή και επιλέγοντας μεταξύ των διαδικαστικών και Αντικειμενοστρεφής προσεγγίσεις, για τη βελτιστοποίηση όχι μόνο για την ταχύτητα, αλλά και συντήρησης, καθώς και. Παρατίθεται περιπτώσεις έρευνας και δοκιμών θα ήταν χρήσιμο, καθώς, αν γνωρίζετε οποιαδήποτε άρθρα διερεύνηση περαιτέρω.


Η κατώτατη γραμμή: πόσο μεγάλο (αν υπάρχει) είναι η απόδοση χτύπησε πραγματικά, όταν θα με OO εναντίον Διαδικαστικά σε μια ερμηνεία γλώσσα;

 
Συγκρίσεις Ταχύτητα - Διαδικαστικά OO σε σχέση με τους ερμηνευμένες γλώσσες
===========================================================================



Ίσως είμαι τρελή, αλλά ανησυχούν για την ταχύτητα σε περιπτώσεις όπως αυτή, χρησιμοποιώντας μια ερμηνευτική γλώσσα είναι σαν να προσπαθώ να καταλάβω τι χρώμα να βάψει το υπόστεγο. Ας μην πάρετε ακόμη και στην ιδέα ότι αυτό το είδος της βελτιστοποίησης είναι εντελώς προ-ώριμη.


Θα χτυπήσει το καρφί στο κεφάλι όταν είπατε «συντήρησης». Είχα επιλέξει την προσέγγιση που είναι η πιο παραγωγική και πιο διατηρήσιμη. Αν χρειάζεστε επιταχύνει αργότερα, δεν θα έρθει από την εναλλαγή μεταξύ των διαδικαστικών σε σχέση με το αντικείμενο προσανατολισμό παραδείγματα κωδικοποίησης μέσα σε μια ερμηνεία γλώσσα.

 

Η κατώτατη γραμμή: όχι, διότι η επιβάρυνση της ερμηνείας κατακλύζει την επιβάρυνση της μεθόδου αποστολής.

 

Εάν χρησιμοποιείτε μια ερμηνευμένη γλώσσα, η διαφορά είναι άνευ σημασίας. Δεν θα πρέπει να χρησιμοποιείτε μια ερμηνευμένη γλώσσα, αν η απόδοση είναι ένα ζήτημα. Και οι δύο θα εκτελέσει περίπου το ίδιο.

 

Έχω πραγματικά κάνει μια μικρή δοκιμή, όπως αυτό το python σε μια ιστοσελίδα που διατηρούν και διαπίστωσε ότι είναι σχεδόν ισοδύναμη με την ταχύτητα, με την διαδικαστική προσέγγιση νίκη με κάτι σαν δέκα χιλιοστά του δευτερολέπτου, αλλά ότι ο κώδικας OO ήταν τόσο σημαντικά καθαρότερο δεν είχα συνεχίσει την άσκηση άλλο από μία επανάληψη.


Έτσι, στην πραγματικότητα, δεν έχει σημασία (από την εμπειρία μου έτσι κι αλλιώς).

 

Η απόδοσή σας θα πρέπει να χαρακτηρίζεται από την εφαρμογή, όχι η γλώσσα. Θα μπορούσατε να χρησιμοποιήσετε την πιο αργή γλώσσα και θα μπορούσε κλίμακα να είναι το μεγαλύτερο site στον κόσμο, αρκεί να το σχεδιασμό σε κλίμακα.


Απλά θυμηθείτε τον πρώτο κανόνα της Optimiztion. 


δεν το κάνουν.


:)

 

Δυστυχώς, έχω κάνει εξετάσεις μου. Έκανα ταχύτητα δοκιμής, και είναι περίπου το ίδιο, αλλά όταν γίνεται έλεγχος για τη χρήση της μνήμης πάρει memory\_get\_usage () σε PHP, είδα ένα συντριπτικά μεγαλύτερο αριθμό από την πλευρά του OOP.


116576 bytes για OOP σε 18.856 bytes για διαδικαστικά. Ξέρω «Hardware είναι φθηνά», αλλά έλα! αύξηση 1.000% στη χρήση; Δυστυχώς, αυτό δεν είναι η βέλτιστη. Και με τόσους πολλούς χρήστες να χτυπήσει την ιστοσελίδα σας με τη μία, είμαι σίγουρος ότι RAM σας ακριβώς θα κάψει, ή εξαντληθεί. Κάνω λάθος?

 

Σύμφωνα με την εμπειρία μου, μια περιοχή κάτω από βαρύ φορτίο θα τέλμα και να σταματήσει να ανταποκρίνεται πολύ πιο εύκολα με κωδικό OOP από διαδικαστικά. Ο λόγος είναι εύκολο να καταλάβει.


OOP απαιτεί πολύ περισσότερα κονδύλια μνήμη (malloc) και πολύ περισσότερες λειτουργίες για να τρέξει στη μνήμη των διαδικαστικό κώδικα. Αυτό απαιτεί πολύ περισσότερο χρόνο της CPU για την εκτέλεση των καθηκόντων του. Πρόκειται ουσιαστικά για «γενικά έξοδα», τυλιγμένο γύρω από διαδικαστικό κώδικα, προσθέτοντας στην επιβάρυνση της CPU για να το εκτελέσει, ειδικά κατά την εκτέλεση λειτουργιών της βάσης δεδομένων.


Πολλοί προγραμματιστές, όπως η διευκόλυνση της OOP, δημιουργώντας μικρά μαύρα κουτιά κρύβεται πίσω από απλές διεπαφές. Ωστόσο, έχω πληρωθεί καλά για να αναβιώσει περιοχές που έπαιρναν πάντα για να ανταποκριθεί κάτω από βαρύ φορτίο του χρήστη. Εξαιρώντας την OOP και την αντικατάστασή του με απλές διαδικαστικές λειτουργίες έκανε μια τεράστια διαφορά.


Εάν δεν μπορείτε να περιμένετε το site σας να είναι πολύ απασχολημένος, με όλα τα μέσα που χρησιμοποιούν OOP. Αν είστε οικοδόμηση ενός συστήματος υψηλής επισκεψιμότητας, θα θελήσετε να αφαιρέσει κάθε κύκλο της CPU από την επεξεργασία και κάθε byte από την έξοδο που μπορείτε.

 