Domanda

In interpretati linguaggi di programmazione come PHP e JavaScript, quali sono le ripercussioni di andare con un approccio Object Oriented su un approccio Procedurale?

In particolare quello che sto cercando è una lista di cose da considerare quando si crea un'applicazione web e scegliere tra approcci Procedurali e ad Oggetti, per ottimizzare non solo per la velocità, ma la manutenibilità come bene.Citato ricerca e casi di test sarebbe utile se siete a conoscenza di qualsiasi articoli esplorare ulteriormente questo.

Linea di fondo:quanto grande è il calo di prestazioni davvero, quando si va con le OO vsProcedurali in un linguaggio interpretato?

È stato utile?

Soluzione

Forse sono pazzo, ma preoccuparsi di velocità in casi come questo utilizzando una chiave di lettura della lingua è come cercare di capire di che colore per dipingere il capannone.Non lasciare mai l'idea che questo tipo di ottimizzazione è interamente pre-maturo.

Hai colpito il chiodo sulla testa quando hai detto 'manutenzione'.Mi piacerebbe scegliere l'approccio più produttivo e più gestibile.Se hai bisogno di velocità, più tardi, it ain't gonna provengono dalla commutazione tra procedurali rispetto object oriented codifica paradigmi all'interno di un linguaggio interpretato.

Altri suggerimenti

Purtroppo, ho fatto il mio test di troppo.Ho fatto test di velocità, ed è circa la stessa, ma quando si verifica l'utilizzo della memoria di ottenere memory_get_usage() in PHP, ho visto una schiacciante numero maggiore sulla OOP lato.

116,576 byte per l'OOP per 18,856 byte per procedurali.So che "l'Hardware è a buon mercato", ma dai!1,000% di aumento di utilizzo?Mi dispiace, non è ottimale.E avere così tanti utenti colpire il tuo sito web in una sola volta, sono sicuro che la tua RAM avrebbe solo bruciare, o correre fuori.Sono io che sbaglio?

Linea di fondo:no, perché il sovraccarico di interpretazione travolge l'overhead del metodo di spedizione.

Nella mia esperienza, un sito sotto carico pesante sarà impantanato e non rispondere più facilmente con OOP codice che procedurali.Il motivo è facile da capire.

OOP, richiede molto più allocazioni di memoria (MALLOC) e molto di più operazioni da eseguire in memoria di codice procedurale.Esso richiede molto più tempo di CPU per svolgere i suoi compiti.Si tratta essenzialmente di 'sovraccarico', avvolto intorno al codice di procedura, aggiungendo alla CPU onere per l'esecuzione di esso, in particolare quando si eseguono operazioni di database.

Molti programmatori, come la convenienza di OOP, la creazione di piccole scatole nere nascosto dietro semplici interfacce.Tuttavia, sono stato pagato bene per rilanciare i siti che sono stati prendendo sempre di rispondere sotto un pesante carico di utenti.Togliendo la programmazione a oggetti e la sua sostituzione con semplici funzioni procedurali fatto una grande differenza.

Se non vi aspettate che il vostro sito sia molto frequentata, con tutti i mezzi utilizzare OOP.Se si sta costruendo un alto traffico di sistema, ti vuoi togliere ogni CPU ciclo di trattamento e ogni byte dall'output che è possibile.

Se si utilizza un linguaggio interpretato, la differenza è irrilevante.Non si dovrebbero usare un linguaggio interpretato, se la prestazione è un problema.Entrambi si esibiranno circa lo stesso.

La tua performance sarà caratterizzata dalla realizzazione, la lingua.Si potrebbe utilizzare il più lento di lingua e può di scala per il più grande sito al mondo di progettazione a scala.

Basta ricordare la prima regola di optimiztion.

Non.

:)

In realtà ho fatto un piccolo test come questo in python su un sito web che mantenere e trovato che sono quasi equivalenti in termini di velocità, con l'approccio procedurale vincente da qualcosa come dieci millesimi di secondo, ma che OO codice in modo più pulito non ho continuato l'esercizio per più di una sola iterazione.

Quindi, in realtà, non importa (per la mia esperienza, comunque).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top