Differenza tra ottimizzazione e scalabilità?

3

Se cito un paragrafo di Wikipedia su Ottimizzazione :

In computer science, program optimization or software optimization is the process of modifying a software system to make some aspect of it work more efficiently or use fewer resources. In general, a computer program may be optimized so that it executes more rapidly, or is capable of operating with less memory storage or other resources, or draw less power.

E su Scalabilità :

Application scalability refers to the improved performance of running applications on a scaled-up version of the system.

Qual è la differenza? Entrambi finiscono per migliorare le prestazioni del sistema. Sono uguali, se è così, perché i loro nomi sono diversi?

    
posta Mohammad Areeb Siddiqui 15.03.2014 - 16:07
fonte

3 risposte

6

Ottimizzazione è il processo per rendere esistente qualcosa di più efficiente, mentre si eseguono le stesse operazioni. Ciò può significare richiedere meno tempo di elaborazione per la stessa operazione. Potrebbe significare prendere meno memoria. Potrebbe significare prendere meno spazio su disco. L'ottimizzazione a volte comporta compromessi, come l'utilizzo di più memoria in cambio di un'elaborazione più veloce.

Rendere le cose scalabili significa fare più delle stesse cose. Inoltre, significa fare più delle stesse cose in modo efficiente. Cercare un oggetto in tasca è facile e veloce. Cercare lo stesso oggetto in casa è più difficile. Cercare lo stesso oggetto quando potrebbe essere in qualsiasi parte del mondo è super difficile. La scalabilità è quanto drasticamente questo genere di cose diventa più difficile. "Più" o migliore scalabilità significa che la ricerca in tutto il mondo è relativamente solo un po 'più difficile della ricerca in tasca.

Come l'ottimizzazione, la scalabilità può avere una varietà di obiettivi. A volte l'obiettivo di scalabilità è il tempo di elaborazione, come nell'esempio di ricerca. A volte è la dimensione del database. A volte è il consumo di memoria. A volte è semplice come mostrare più cose sullo schermo senza far impazzire gli utenti.

Quindi, in breve, l'ottimizzazione è l'atto di rendere più efficiente una singola operazione. Rendere le cose scalabili sta rendendo quell'operazione capace di fare più in un modo più efficiente.

O se potessi pensare a come si comporta un'operazione per una serie di input come una curva: l'ottimizzazione sta abbassando uno punto della curva; fare qualcosa di scalabile sta riducendo la pendenza della curva.

    
risposta data 15.03.2014 - 16:28
fonte
2

Sono diversi.

La scalabilità, generalmente, si riferisce a quando il throughput atteso è di diversi ordini di grandezza maggiore.

Ad esempio, se scrivo un sito web che tiene traccia delle mie finanze e voglio ottimizzarlo per la velocità, potrei decidere di conservare TUTTI i dati in memoria. Ciò significa che il mio sito web può rispondere più rapidamente - non è necessario estrarre i dati dal disco (dimentichiamo, per il momento, cosa succede quando il mio server viene riavviato).

Per un utente, questo potrebbe essere altamente ottimizzato. Tuttavia, manca di scalabilità; quando il mio sito Web raggiunge 1.000.000 di utenti, mantenere tutti i dati in memoria non è più un'opzione.

La maggior parte dei problemi di scalabilità si verificano quando un sistema è suddiviso su più server.

Le cose si comportano diversamente in grandi volumi: i database potrebbero non essere più adatti a un singolo server; taglia il tuo database o lo replichi? Se dividi il tuo sito web su più server, usi diversi server identici, separi i dati statici da quelli dinamici, mantieni risorse specifiche su una rete di distribuzione di contenuti (CDN)? Come funzionerà il tuo sito web? Utilizzi le opzioni di bilanciamento del carico o il bilanciamento del carico DNS?

Cosa succede se un server si arresta? Se hai un server, non importa quanto sia ottimizzato, significa un'interruzione; questo va bene per 1 o 5 o 10 utenti, ma per Google? Google, in qualsiasi momento, avrà server inattivo. Non è più una questione di "un disco ha fallito, pagina un amministratore di sistema per risolvere il problema", ma "aggiungerlo alla lista, l'ingegnere di sostituzione unità fallita trundle il suo carrello in giro in pochi minuti". Potrebbe non valere la pena che Google utilizzi il RAID, poiché hanno una "serie ridondante di server poco costosi".

    
risposta data 15.03.2014 - 16:27
fonte
0

Ottimizzazione è un fattore Interno , dove Scalabilità è un fattore Esterno .

Pensa a questo come se imparassi una nuova abilità nel fare una certa cosa che ti rende X più veloce di prima, quindi hai ottimizzato te stesso nel farlo azione specifica; Tuttavia se chiedi al tuo amico di unirsi e aiutarti su quella cosa invece - per accelerare il processo, allora questo è ridimensionamento .

Quindi ottimizzazione in pratica aumenta l' efficienza del processo per completare più attività utilizzando le stesse risorse di prima, ma scalabilità semplicemente aumenta le risorse per ottenere più risultati.

    
risposta data 15.03.2014 - 17:33
fonte

Leggi altre domande sui tag