2012-01-18 6 views
8

Sono in procinto di scrivere una classe che probabilmente finirà per contenere circa 3000 righe di codice.L'avvio di una classe di grandi dimensioni su una pagina lo rallenta?

Quello che mi piacerebbe sapere è molto semplice, l'avvio di questa classe nella parte superiore di ogni pagina rallenterà il tempo di esecuzione della pagina, anche se verranno utilizzati solo uno/due metodi degli oggetti? Farà molta più fatica sul mio server se vi si accede diverse migliaia di volte al giorno?

In tal caso, dovrei cercare di creare estensioni per gestire ciascun metodo invece di avere l'intera classe in un unico file?

a cura

In primo luogo, solo per correggere KingCrunch e Kenaniah, questa classe è per il mio API, il che significa resultantly che contiene un sacco di funzioni per il recupero dei dati da visualizzare sul sito web e la nostra applicazione iPhone , insieme alla nostra intera applicazione Facebook. Quindi 3000 linee sono dannatamente piccole date le dimensioni e le capacità del nostro sito Web, senza contare che oltre 700 di queste linee sono commenti. Quindi posso assicurarti che non c'è difetto di progettazione, anche se potrebbe esserci un difetto strutturale, motivo per cui sto facendo questa domanda ...

La funzione di costruzione imposta semplicemente i valori predefiniti sulle variabili definite, niente di più.

Ho completamente riscritto questo file da zero quindi non esiste un vecchio codice e sono abbastanza sicuro che i metodi all'interno della classe siano il più efficienti possibile.

Ho monitorato il mio utilizzo del server, ecc., Oltre a simulare grandi volumi di traffico utilizzando lo strumento ab di apache e sebbene l'utilizzo della memoria sia aumentato, sembra che vada bene.

+3

una classe 3000 LOCs sembra più un difetto di progettazione, che un problema di prestazioni ... – KingCrunch

+0

In breve, sì lo rallenterà perché sarà devo inizializzare quella classe. Probabilmente non è così male come pensi sia. Sembra che potresti voler dare un'occhiata a questa domanda correlata: http://stackoverflow.com/questions/1424382/one-compressed-file-of-classes-vs-multiple-class-files-in-php – tjarratt

+2

Risposta breve: * Sì*. Risposta lunga: esiste una serie infinita di fattori che * rallentano * una pagina. Quello che perdi * in 3000 righe di codice potrebbe essere inventato altrove. –

risposta

4

sarà iniziare questa classe nella parte superiore di ogni pagina rallentare il tempo di esecuzione della pagina

Intende aggiungere al tempo di esecuzione? Sì. Ovviamente. Niente è gratis. Ogni riga di codice analizzata ha un piccolo overhead (tuttavia è possibile eliminare la maggior parte di questo costo con una cache di codice operativo come APC). Tuttavia, stiamo parlando di sovraccarico di pochi millisecondi, probabilmente. L'unico modo per essere sicuri è profilare te stesso.

Sta andando a mettere molto più a dura prova il mio server se vi si accede diverse migliaia di volte al giorno?

Per esperienza personale, n. Ma ancora, profilo e misura te stesso. Dovresti monitorare le metriche delle prestazioni di base sul tuo server (utilizzo della CPU, media del carico, ecc.). Distribuisci le tue modifiche e osserva le tue metriche.

+0

per la prima parte, dipende, se ha bisogno delle linee 3k, e considera di dividerlo in più classi, finirà per caricarle tutte uno ad uno, che rallenterà le sue esibizioni. –

+0

Sì, inclusi i dieci 300 file di linea è (un po ') più lento di includere un file di 3000 righe. Di nuovo, la vera differenza nel tempo della parete è probabilmente piuttosto banale. –

+1

Ma con l'autoloading, potrebbe non essere necessario caricare ogni "sottoclasse" per ogni richiesta, e questa è anche una buona giustificazione per l'utilizzo di APC –

1

No, creare un'istanza di una classe che è composta da un sacco di LOC, non lo rende automaticamente lento.

Cioè, a meno che non si faccia qualcosa nel costruttore, ma poi dipende da cosa si sta facendo lì, e non quanto è grande la classe.

1

no, in realtà è più veloce di dividerlo in più file.

l'unico problema è che spesso si verifica un grosso blocco di codice e le modifiche sono più difficili da eseguire.

MODIFICA: sarà più veloce se tutte le linee sono utili.se hai un sacco di vecchio codice potresti considerare una pulizia

Problemi correlati